使用InputMismatchException尝试/ catch创建无限循环所以我正在构建一个从用户输入中获取内容的程序。我有一个看起来非常简单的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的参数,但它没有解决问题。
3 回答

心有法竹
TA贡献1866条经验 获得超5个赞
你也可以试试以下
do { try { System.out.println("Enter first num: "); n1 = Integer.parseInt(input.next()); System.out.println("Enter second num: "); n2 = Integer.parseInt(input.next()); nQuotient = n1/n2; bError = false; } catch (Exception e) { System.out.println("Error!"); input.reset(); } } while (bError);

慕妹3146593
TA贡献1820条经验 获得超9个赞
要关注debobroto das的答案,你也可以放下
input.reset();input.next();
我有同样的问题,当我尝试这个。它完全修复了它。
添加回答
举报
0/150
提交
取消