Итак, я создаю программу, которая принимает ints от пользовательского ввода. У меня есть, кажется, очень простой блок try/catch, который, если пользователь не вводит int, должен повторять блок до тех пор, пока это не произойдет. Здесь соответствующая часть кода:
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);
}
}
Если я введу 0 для второго целого числа, то try/catch делает именно то, что он предположил, и заставляет меня снова вставить его. Но, если у меня есть InputMismatchException, например, введя 5.5 для одного из чисел, оно просто показывает мое сообщение об ошибке в бесконечном цикле. Почему это происходит, и что я могу с этим поделать? (Кстати, я попытался явно ввести InputMismatchException в качестве аргумента для catch, но это не устранило проблему.