私はこのコードを持っていて、文字の例外をキャッチしたいのですが、次のエラーが発生し続けます。
Exception in thread "main" Java.util.InputMismatchException
at Java.util.Scanner.throwFor(Scanner.Java:840)
at Java.util.Scanner.next(Scanner.Java:1461)
at Java.util.Scanner.nextInt(Scanner.Java:2091)
at Java.util.Scanner.nextInt(Scanner.Java:2050)
at exercise_one.Exercise.main(Exercise.Java:17)
そしてここに私のコードがあります:
System.out.print("Enter the number of students: ");
students = input.nextInt();
while (students <= 0) {
try {
System.out.print("Enter the number of students: ");
students = input.nextInt();
}
catch (InputMismatchException e) {
System.out.print("Enter the number of students");
}
}
代わりにdo-whileループを使用して、最初のinput.nextInt()
を削除できます。
do {
try {
System.out.print("Enter the number of students: ");
students = input.nextInt();
} catch (InputMismatchException e) {
System.out.print("Invalid number of students. ");
}
input.nextLine(); // clears the buffer
} while (students <= 0);
したがって、すべてのInputMismatchException
を1か所で処理できます。
doc から
Scanner.nextInt入力の次のトークンをintとしてスキャンします。次のトークンが整数の正規表現と一致しない場合、または範囲外の場合
したがって、入力として整数を入力していないようです。
あなたが使用することができます
while (students <= 0) {
try {
System.out.print("Enter the number of students: ");
students = input1.nextInt();
}
catch (InputMismatchException e) {
input1.nextLine();
}
}