循环 try-catch 不起作用
Looping try-catch isn't working
我该如何正确地循环这个 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.");
}
}
}
您使用了赋值运算符 =
,因此 loop
在选中时始终为 true
,而不是 ==
运算符。您可以使用 while(loop == true)
,但 loop
已经是 boolean
。最简单的解决方案是 while(loop)
.
此外,如果 nextInt
中出现错误,它不会消耗输入。在 catch
块中调用 next()
以使用非数字输入并继续前进。
我该如何正确地循环这个 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.");
}
}
}
您使用了赋值运算符 =
,因此 loop
在选中时始终为 true
,而不是 ==
运算符。您可以使用 while(loop == true)
,但 loop
已经是 boolean
。最简单的解决方案是 while(loop)
.
此外,如果 nextInt
中出现错误,它不会消耗输入。在 catch
块中调用 next()
以使用非数字输入并继续前进。