循环 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() 以使用非数字输入并继续前进。