我正在编写一个返回整数值的方法。在方法中,我通过扫描仪类通过控制台提示用户输入整数。
因为我使用的是扫描方法“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;
}
编辑代码已被编辑,“错误”布尔值已被调整
答案 0 :(得分:0)
当你将错误设置为true时,问题出现在你的问题中。一旦将error设置为true,就会以无法退出的方式构造循环,因为错误永远不会设置为false,因此check永远不会递增。我会重新构建这个循环系统,有更好的方法来处理它。
答案 1 :(得分:0)
试试这个:
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.");
try {
money = Integer.parseInt(scan.next());
} catch (Exception e) {
System.out.println("Error. Please enter an integer value." + e);
error = true;
}
if (error == false) {
check++;
}
}
return money;
}
答案 2 :(得分:-1)
while(true)
永远不会是假的,所以如果循环没有点击break
语句,那么循环永远不会终止