質問: new java.util.Scanner(System.in).nextInt(); /*大小関係を調べる*/ if( ans > inputans ){ System.out.println("でかすぎ"); }else if( ans < inputans ){ System.out.println("小さすぎすぎ"); }else{ System.out.println("ぴったり"); } break; case 2: System.out.println("\nルール説明"); System.out.println("コンピューターが1~99の数字をランダムで決めるのでそれを当ててください。\n送信した数字が設定された数字より大きい場合は「でかすぎ」\n小さい場合は「小さすぎ」と表示されます。"); break; case 3: System.out.println("ゲームを終了します。"); System.exit(0); break; } } } ここまではできたのですがcase1で入力させた文字が間違いだった場合にもう一度case1を繰り返す処理をしたいです。 また、case2のルール説明が終わった後に最初のメニューに戻す処理を行いたいのですがどうすればよいかわかりません。ご教授していただけると嬉しいです。
回答: 全体の構造を書いてみました。 ``` package teratail; import java.util.InputMismatchException; import java.util.Scanner; public class Kadai1203 { public static void main(String[] args) { Scanner sc = new java.util.Scanner(System.in); System.out.println("数当てゲーム"); boolean is_cont = true; while (is_cont) { System.out.println("1-スタート 2-ルール 3-ゲームを終わる"); is_cont = do_action(input_int(sc), sc); } System.out.println("ゲームを終了します。"); } static int input_int(Scanner sc) { while (true) { try { return sc.nextInt(); } catch (InputMismatchException e) { System.out.println("整数を入力してください。"); } finally { sc.nextLine(); } } } static boolean do_action(int menu, Scanner sc) { switch (menu) { case 3: return false; case 1: play(sc); return true; default: show_help(); return true; } } static void show_help() { System.out.println("\nルール説明"); System.out.println("コンピューターが1~99の数字をランダムで決めるのでそれを当ててください。\n送信した数字が設定された数字より大きい場合は「でかすぎ」\n小さい場合は「小さすぎ」と表示されます。"); } static void play(Scanner sc) { // TODO; } } ``` play() の中身は、数当てゲームの処理を埋めていってください。 その前に、 1, 2 3, a, 1 2 など いろいろな入力をしてみて、メニュー処理ループが 思ったような挙動をするかを確認してください。