gpt4 book ai didi

java - 扫描器nextInt()导致循环内无休止的错误

转载 作者:搜寻专家 更新时间:2023-10-30 19:42:08 24 4
gpt4 key购买 nike

这个问题已经有了答案:
How to handle infinite loop caused by invalid input (InputMismatchException) using Scanner
5个答案
当用户输入的不是数字时,以下代码会输出无休止的错误。

Scanner scn = new Scanner(System.in);
System.out.println("Enter the number: ");
int n = 0;
while(true){
try {
n = scn.nextInt();
} catch (Exception e) {
e.printStackTrace();
continue;
}
break;
}

我希望当用户输入的不是数字时,代码等待新的输入。

最佳答案

来自爪哇,
当扫描器抛出输入不匹配异常时,扫描器将不会
传递导致异常的令牌,以便可以检索到它
或者通过其他方法跳过。
在您的情况下,scn.nextInt()必须引发inputMismatchException。但是令牌没有被传递(换句话说,输入令牌挂在那里由扫描程序传递)。因此,在循环的下一次迭代中,scn.nextint()再次读取同一个标记,并再次抛出异常,导致无限循环。
如果检查CharBuffer(heapCharBuffer?)在scanner对象中,它仍然包含您第一次键入的并导致此问题的输入。此外,您不能显式清除扫描仪的缓冲区。
另外,小心资源泄漏!

关于java - 扫描器nextInt()导致循环内无休止的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54305087/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com