phase
有我的代码。我想确保它不会抛出异常并且还要求用户输入正确的输入格式,这是一个整数。但它不断进入无限循环。
答案 0 :(得分:0)
将input.nextLine();
添加到else
块。
这将允许您将下一个值放入缓冲区而不是陷入无限循环。
答案 1 :(得分:0)
我相信正确的解决方案是:
while (!isValid) {
System.out.println("Enter house number: ");
if (input.hasNextInt()) {
houseNum = input.nextInt();
isValid = true;
}
else {
System.err.print("Wrong input. Try again");
isValid = false; // not really necessary; isValid was already false
}
input.nextLine();
}
无论读取数字是否成功,我都会从输入中跳过一行。如果没有读取数字,则会跳过整个错误的行;如果读取了一个数字,它只是在数字后跳过换行符。