-1

ラインにコメントしました。その行が別の入力を受け取らないのはなぜですか? そして、整数が入力されるまで繰り返します。

import java.util.*;

class ScanNumbers{

   public static void main(String[] args){

      Scanner scan = new Scanner(System.in);

      int[] NumberEntry = new int[6];

         for (int i = 1; i < NumberEntry.length; i++){

            boolean isInteger = false;

            while (!isInteger){

            try {
                System.out.print("Entry " +i + "/5, enter an integer value: ");
                NumberEntry[i] = scan.nextInt();
               isInteger = true;
             }

            catch (Exception e){
               System.out.print("Entry " +i + "/5, Please enter only an integer value: ");
               NumberEntry[i] = scan.nextInt(); //Right here, I would like to ask again, why is this line not doing the job?
            }
         }
      }
         Arrays.sort(NumberEntry);
         System.out.print("The max integer is: " +  + NumberEntry[NumberEntry.length-1]);
   }
}

キャッチをもう一度試すように指示することはできませんか?

編集 1: ハハ、ああ、ありがとう、行を削除しましたが、出力は「エントリ 1/5、整数値を入力してください:」を繰り返し続けます。

編集2:ありがとう!今はうまくいきます!

4

1 に答える 1

4

何が起こっているのかというと、無効な入力がスキャナーに保持されているということです。有効なデータの受け入れに戻ることができるように、入力をスキップする必要があります。そうしないと、例外が何度もキャッチされます。あなたがやろうとしていることをするためのより簡単な方法もあります。これを試して:

try {
    System.out.print("Entry " +i + "/5, enter an integer value: ");
    NumberEntry[i] = scan.nextInt();
}
catch (Exception e){
    scan.next();
    i--;
    continue;
}

これにより、不要な入力がスキップされます。また、同じ反復でループを再開します。

于 2013-03-11T02:17:49.083 に答える