如何正确循环此try catch语句?据我所知,
try块中的playerIntInput = reader.nextInt();
被执行,如果存在异常,它会捕获异常,这应该导致永远不会到达loop = false
。然后它在catch块中输出消息,它应该循环回try并再次请求输入。相反,我只是从catch块获得一个无限循环的输出。
void CheckInput(int playerIntInput) {
boolean loop = true;
while(loop=true) {
try {
playerIntInput = reader.nextInt();
loop = false;
}
catch(InputMismatchException e) {
System.out.println("Invalid character was used, try again.");
}
}
}
答案 0 :(得分:5)
您使用了分配运算符=
,因此选中时loop
始终为true
,而不是==
运算符。您可以使用while(loop == true)
,但loop
已经是boolean
。最简单的解决方案是while(loop)
。
此外,如果nextInt
中出现错误,则不会消耗输入。在next()
块中调用catch
以使用非数字输入并超过它。