如果遇到错误,这个do / while循环将无限循环,即使在每个循环后错误设置为false ...我不知道如何解释它。
import java.util.Scanner;
public class ErrorChecking {
public static int inputInt(Scanner input, String console) {
int finalInt = 0;
int num;
boolean error = false;
do {
error = false;
System.out.print(console);
if(input.hasNextInt()) {
num = input.nextInt();
String numDuplicate = Integer.toString(num);
int numLength = numDuplicate.length();
if(numLength == 8) {
finalInt = num;
error = false;
} else {
System.out.println("Invalid input. ID needs to be 8 digits long. Please try again.");
error = true;
}
} else {
System.out.println("Invalid input. ID needs to be 8 numbers. Please try again.");
error = true;
}
} while(error);
return finalInt;
}
}
答案 0 :(得分:2)
如果input.hasNextInt()
永远返回false
,那么你的循环将永远运行,因为你没有做任何事情来推进输入,它会在每次迭代时返回false
。我的猜测(没有关于你的程序行为的更多细节)是这是正在发生的事情。
您需要以某种方式消耗当前输入以清除错误情况。这样做的逻辑取决于您期望作为输入的内容。