0 java user-input try-catch infinite-loop
我如何正确循环这个try catch语句?据我所知,
playerIntInput = reader.nextInt();try块中的内容被执行,它会捕获异常(如果存在),这应该导致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.");
}
}
}
Run Code Online (Sandbox Code Playgroud)
您使用了赋值运算符=,因此loop总是true在选中时,而不是==运算符.你可以使用while(loop == true),但loop已经是boolean.最简单的解决方案是while(loop).
此外,如果出现错误nextInt,则不会消耗输入.next()在catch块中调用以使用非数字输入并超过它.