gpt4 book ai didi

java - 为什么 Scanner 似乎每次调用 nextInt 时都不寻找新的 int

转载 作者:太空宇宙 更新时间:2023-11-04 06:29:43 25 4
gpt4 key购买 nike

为什么它在 while 循环中继续重复“请输入有效数字”并且不断重复而不停止让用户输入内容。

        while (true) { //This will continually run until something is returned, AkA the number 1 or 2
Scanner s = new Scanner(System.in);
try {
input = s.nextInt();
} catch (Exception e) {
System.out.println("Please enter a valid number!");
}
s.close();
}

当我使用调试器时,似乎没有任何原因导致此问题,也没有抛出任何错误。是什么导致了这个问题以及如何解决它?

最佳答案

如果底层流实现了 Closable 接口(interface),关闭扫描器也会关闭底层流。

在本例中是 System.in,一旦关闭,您将无法再次使用它创建扫描仪。

参见http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html#close()了解具体细节。

但是,即使您解决了该问题,nextInt 中的异常也不会推进流指针,因此,下次调用它时,它将再次在输入流中找到完全相同的数据。

您需要清除错误数据才能重试。由于您正在接受用户输入,因此一种解决方案是调用 nextLine 并将其丢弃;

string junk = s.nextLine();

关于java - 为什么 Scanner 似乎每次调用 nextInt 时都不寻找新的 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26309324/

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