循环尝试捕获不起作用

时间:2015-04-23 17:38:14

标签: java try-catch user-input infinite-loop

如何正确循环此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.");
        }
    }
}

1 个答案:

答案 0 :(得分:5)

您使用了分配运算符=,因此选中时loop始终为true,而不是==运算符。您可以使用while(loop == true),但loop已经是boolean。最简单的解决方案是while(loop)

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