だから私はユーザー入力からintを取るプログラムを構築しています。ユーザーが int を入力しない場合、入力するまでブロックを繰り返す必要がある、非常に単純な try/catch ブロックのように見えるものがあります。コードの関連部分は次のとおりです。
import java.util.InputMismatchException;
import java.util.Scanner;
public class Except {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
boolean bError = true;
int n1 = 0, n2 = 0, nQuotient = 0;
do {
try {
System.out.println("Enter first num: ");
n1 = input.nextInt();
System.out.println("Enter second num: ");
n2 = input.nextInt();
nQuotient = n1/n2;
bError = false;
}
catch (Exception e) {
System.out.println("Error!");
}
} while (bError);
System.out.printf("%d/%d = %d",n1,n2, nQuotient);
}
}
2 番目の整数に 0 を入力すると、try/catch は本来の動作を正確に実行し、再度入力させます。しかし、数値の 1 つに 5.5 を入力するなどして InputMismatchException が発生した場合、無限ループでエラー メッセージが表示されるだけです。なぜこれが起こっているのですか?どうすればよいですか? (ちなみに、キャッチする引数にInputMismatchExceptionを明示的に打ってみましたが、直りませんでした。