循环尝试捕获不起作用

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)

rge*_*man 5

您使用了赋值运算符=,因此loop总是true在选中时,而不是==运算符.你可以使用while(loop == true),但loop已经是boolean.最简单的解决方案是while(loop).

此外,如果出现错误nextInt,则不会消耗输入.next()catch块中调用以使用非数字输入并超过它.