”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > Java中处理InputMismatchException时如何防止无限循环?

Java中处理InputMismatchException时如何防止无限循环?

发布于2024-12-23
浏览:377

How to Prevent Infinite Loops When Handling InputMismatchException in Java?

带有InputMismatchException的try/catch块中的无限循环:解决方案

您的Java程序在尝试处理InputMismatchException时遇到无限循环/catch 块,同时从用户处获取整数输入。此行为源于这样的事实:捕获 InputMismatchException 后,扫描器仍处于无效状态,导致无限重复循环。

要解决此问题,必须在 catch 块中执行以下操作:

catch (InputMismatchException e) {
    System.out.println("Error!");
    input.next(); // Move to the next line to avoid the infinite loop
}

input.next() 方法将扫描器指针前进到下一行,有效地丢弃导致异常的任何无效输入。

或者,您可以在之前使用 hasNextInt() 方法尝试读取整数,从而确保读取的值确实是整数。这种方法完全消除了异常处理的需要:

while (true) {
    if (input.hasNextInt()) {
        n1 = input.nextInt();
        break;
    } else {
        input.next(); // Skip non-numeric input
    }
}

请记住,Java Scanner 文档指出,抛出 InputMismatchException 后,扫描器将不会传递负责异常的令牌,需要通过其他方式检索或绕过它。实现这些修改应该可以缓解 Java 程序中的无限循环问题。

最新教程 更多>

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3