質問: 3) { System.out.println("不正解です..."); } else { System.out.println("1~3の番号を入力してください。"); } } } ``` 返信が遅れて申し訳ありません。 自分でwhile文を使ったのはこれです。 何人かの方に正解らしきコードを教えてもらったのですが、 内容を理解できないので、勉強不足ということでもう一度、 勉強しなおします。
回答: int ans = new java.util.Scanner(System.in).nextInt(); の部分が入力された文字を読み取る箇所です。 elseでメッセージ表示された後に続く処理がないので終わります。 whileなどでループさせて文字読み取り処理部分に戻ればいけるはずです。 追記: 記載されている内容だとループの囲いがその部分だけなので結局1~3以外の場合に終わってしまいます。 ループ処理で全体を囲ってあげて、正解の場合には抜ける処理にしてあげるようにする等しましょう。 書き方は色々あると思いますが、提示されたコードを元に修正すると下記な感じです。 ``` public static void main(String[] args) { System.out.println("「上上下下左右左右BA」でお馴染みの名前は○○コマンド?"); System.out.println("1:コナミ 2: ナムコ 3: セガ"); System.out.print("正解の番号を入力してください>"); // ループ条件が常に真 while (true) { int ans = new java.util.Scanner(System.in).nextInt(); if (ans == 1) { System.out.println("正解です!"); System.out.println("1986年に発売されたFCソフト「グラディウス」が元祖ネタです。"); break; } else if (ans == 2 || ans == 3) { System.out.println("不正解です..."); break; } else { // メッセージを表示して再ループ System.out.println("1~3の番号を入力してください。"); } } } ```