8

このコードで例外がキャッチされるとmenuSystemメソッドが実行されますが、数値を入力するとプログラムが終了し、「ビルドは成功しました」というメッセージが表示されます。例外が発生した後に while ループに戻る方法はありますか?

public static void main(String[] args) {
   final UnitResults myUnit = new UnitResults(10, "Java");
   int option = menuSystem();

   try {
      while (option != 0) {
         final Scanner keyb = new Scanner(System.in);
         System.out.println("");
         switch (option) {
         }
      }
   } catch (Exception InputMismachException) {
      System.out.println("\nPlease Enter a Valid Number\n");
      option = menuSystem();
   }
}
4

3 に答える 3

18

while ループ内にtry/catchを配置します。

    while (option != 0) {
        final Scanner keyb = new Scanner(System.in);
        System.out.println("");
        try {
            switch (option) {

            }
        } catch (Exception InputMismachException) {
            System.out.println("\nPlease Enter a Valid Number\n");
            option = menuSystem();
        }
    }
于 2012-12-10T16:31:48.927 に答える
1

tryandをループcatch内に入れます。whileコードが使用してnextInt()いる場合、不一致が発生した場合に消費されないため、無効な入力をスキップする必要があります。

消費しようとする前に有効な入力が入力されるまでのメソッドをInputMismatchException使用することで、例外処理を回避することができます。hasNextInt()Scanner

while (!kb.hasNextInt()) kb.next();
于 2012-12-10T16:31:42.560 に答える