gpt4 book ai didi

java.util.NoSuchElementException : No line found - Reading user input works only once

转载 作者:行者123 更新时间:2023-11-30 06:15:41 25 4
gpt4 key购买 nike

我试图创建一个非常简单的程序(没关系,但扫雷游戏),我遇到了以下问题:当我尝试获取用户输入时(使用 Scanner) ,它第一次工作(在第一轮),但在第二轮,按 enter 后,它抛出以下异常:java.util.NoSuchElementException: No line found.

两个回合之间没有任何变化,我在每个回合都创建了一个新的 Scanner 实例。

代码:

public String nextTurn() {
Scanner scn = new Scanner(System.in);

System.out.print("Please insert your action: ");
StringTokenizer input = new StringTokenizer(scn.nextLine());
scn.close();
//...
}

同样,当我第一次调用此方法时它有效,但在第二次调用时失败。您知道问题出在哪里吗?

最佳答案

System.in 是一个输入流,接收所有控制台输入。

就像任何输入流一样,它可以被关闭。用户可以关闭它(通过按 ctrlDctrlZ),但您也可以通过编程方式关闭它- 它是一个 Closeable 对象。

当你有一个基于输入流的扫描器时,当你关闭扫描器时,它也会自动关闭位于它后面的输入流。也就是说,在您第一次关闭 scn 时,您已经关闭了 System.in

下次您在 System.in 上创建扫描器时,它基本上是一个封闭流上的扫描器。当您尝试调用任何 nextXXX 方法时,它会告诉您流中没有这样的元素。那是因为流已经关闭了。

您应该做的是只在程序开始时打开扫描仪一次,然后在程序结束时关闭它一次。您可以继续使用同一个扫描器——实际上不需要为同一个输入流打开多个扫描器。

关于java.util.NoSuchElementException : No line found - Reading user input works only once,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28395019/

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