【发布时间】:2016-08-22 18:54:42
【问题描述】:
我正在编写一个返回整数值的方法。在方法中,我通过扫描仪类通过控制台提示用户输入整数。
因为我正在使用扫描仪方法“scan.nextInt()”,所以我也在检查“InputMismatchException”错误。我已将异常处理放在一个循环中,以便如果捕获到异常,则会通知用户并重复循环。这将要求用户继续输入值,直到只输入一个整数值。
但是,我的问题是在它第一次检查错误之后,当它循环回来时,发生了一些事情,并且没有提示用户输入新值并且再次引发异常。这当然会导致无限循环。
我研究并发现了一些与该问题相关的案例,并尝试执行相关修复,但我所做的任何事情似乎都不起作用,而且我不明白到底发生了什么。是否跳过了 try 块?我对 try 块的表示法有问题吗?
public static int inputCheck() {
int check=0;
int money = 0;
while (check==0) {
boolean error = false;
System.out.println("Please enter the amount of money your player has.");
while (true) {
try {
money = scan.nextInt();
}catch (InputMismatchException wrongInput) {
System.out.println("Error. Please enter an integer value." + wrongInput);
error = true;
}
break;
}
if (error==false)
check++;
}
return money;
}
EDIT 代码已编辑,“错误”布尔值已调整
【问题讨论】:
-
为什么会有两个嵌套循环?
-
考虑使用
if(!error)而不是检查相等性。 -
您是否尝试过使用调试器单步执行?
-
@Oliver 第二个循环只是我尝试解决此问题的步骤之一。
-
回复,“我的 IDE 没有调试器?”真的吗?那是什么IDE?谁有胆量称它为 IDE?
标签: java exception-handling infinite-loop