java - 循环 try-catch 不起作用

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

我如何正确循环这个 try catch 语句?据我所知, try block 中的 playerIntInput = reader.nextInt(); 被执行,如果存在异常,它会捕获异常,这应该导致 loop = false 永远不会到达。然后它在 catch block 中输出消息,并且应该循环回到 try 并再次请求输入。相反,我只是从 catch block 获得无限循环的输出。

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 block 中调用 next() 以使用非数字输入并前进超过它。

关于java - 循环 try-catch 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29830643/

相关文章:

c# - 合并不同语言的程序

java - 为什么在 16_711_711f == 16_711_712f 中识别第 8 个小数位, float 不应该只有 7 个小数位精度?

函数内部的 Python Try-Except

javascript - 异步 - 等待 JavaScript : unable to catch error details from an Error object

c++ - cin.getline() 失败后输入?

java - 什么是 org.eclipse.swt.widgets.Table;相当于 jTable1.setValueAt?

Oracle的DBMS_UTILITY.GET_HASH_VALUE函数的Java实现

c++ - 在 C++ 中捕获类型错误

java - 如何修改我的程序以便用户不需要指定输入长度?

Java - 从用户获取特定输入的有效方法