首页 >Java >java教程 >Java中处理InputMismatchException时如何防止无限循环?

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

DDD
DDD原创
2024-12-24 00:38:14390浏览

How to Prevent Infinite Loops When Handling InputMismatchException in Java?

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

您的Java程序在try中处理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 程序中的无限循环问题。

以上是Java中处理InputMismatchException时如何防止无限循环?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn