if文の中のメソッドを発火させたい
クイズプログラムを作っている。
A~Dの選択肢以外の答えが入力された際に、もう一度print();を実行したい。
2回目以降のprint();が発火しない
java
1 if (checkAnswer(answer, st) == false) { 2 System.out.println("選択肢の中から答えを入力してください。"); 3 print(); 4 }
該当のソースコード
java
1public class Main { 2 public static void main(String[] args) { 3 Question q = new Question(); 4 q.print(); 5 } 6}
java
1import java.util.Arrays; 2import java.util.Scanner; 3 4public class Question { 5 String answer; 6 7 String str = "トランザクション処理プログラムが,データベース更新の途中で異常終了した場合,ロールバック処理によってデータベースを復元する。このとき使用する情報はどれか。"; 8 String A = "A:最新のスナップショット情報"; 9 String B = "B:最新のバックアップファイル情報"; 10 String C = "C:ログファイルの更新後情報"; 11 String D = "D:ログファイルの更新前情報"; 12 13 String[] st = { "A", "B", "C", "D" }; 14 15 public void print() { 16 System.out.println(str); 17 System.out.println(A); 18 System.out.println(B); 19 System.out.println(C); 20 System.out.println(D); 21 System.out.println("選択肢を入力してください。"); 22 23 input(); 24 } 25 26 public void input() { 27 Scanner scanner = new Scanner(System.in); 28 String answer = scanner.nextLine().toUpperCase(); 29 30 if (checkAnswer(answer, st) == false) { 31 System.out.println("選択肢の中から答えを入力してください。"); 32 print(); 33 } 34 } 35 36 public static boolean checkAnswer(String answer, String[] st) { 37 if (Arrays.asList(st).contains(answer)) { 38 return true; 39 } else { 40 return false; 41 } 42 } 43 44}
実行結果
トランザクション処理プログラムが,データベース更新の途中で異常終了した場合,ロールバック処理によってデータベースを復元する。このとき使用する情報はどれか。 A:最新のスナップショット情報 B:最新のバックアップファイル情報 C:ログファイルの更新後情報 D:ログファイルの更新前情報 選択肢を入力してください。 ⬛︎
試した事
該当しないfを入力した場合、プログラムが停止してprint();が実行されなかった。
a~dを入力した場合、プログラムが終了した。
開発・実行ツール
vscode
こちらを参考にvscodeでJavaを実行出来るようにしました。
回答3件
あなたの回答
tips
プレビュー