gpt4 book ai didi

java - 不等待扫描仪输入,抛出 ElementNotFoundException

转载 作者:行者123 更新时间:2023-12-02 09:59:05 24 4
gpt4 key购买 nike

所以我试图编写一个简单的菜单,其中一些选项被打印到屏幕上,然后我询问用户他们想要哪个选项。无论他们输入什么,都应该保存并将它们发送到菜单选项之一。相反,它在第 20 行 (String userInput = user.next();) 给了我一个“NoSuchElementException”。我没有任何 .nextInt() 请帮忙。

我尝试过执行 while(user.hasNext()) {} 和 if(user.hasNext()){} 并将它们一起尝试。我要么得到异常,要么陷入无限循环。

public static void menu(Pet myPet) {


System.out.println();
System.out.print("Welcome, " + myPet.getName());

while(true) {

Scanner user = new Scanner(System.in);
System.out.println(". What would you like to do?");
System.out.println("Games Feed Walk Status");
**Error** String userInput = user.next();

if (userInput.equals("Games")) {

它应该只是等待输入。我尝试过仅设置 userInput,它似乎可以正常工作,但后来在我的游戏菜单中我有一个类似的设置,它也在那里崩溃了。

最佳答案

我没有您的所有源代码,但您似乎在 while 循环中的扫描仪上调用 close()

以下代码片段有效:

        while (true) {

Scanner user = new Scanner(System.in);
System.out.println(". What would you like to do?");
System.out.println("Games Feed Walk Status");
String userInput = user.next();

System.out.println(userInput);
}

正确提示:

. What would you like to do?
Games Feed Walk Status
test1
test1
. What would you like to do?
Games Feed Walk Status
test2
test2

但是,在循环内的扫描器上添加 close() 调用会重新创建您所描述的异常。

        while (true) {

Scanner user = new Scanner(System.in);
System.out.println(". What would you like to do?");
System.out.println("Games Feed Walk Status");
String userInput = user.next();

System.out.println(userInput);
user.close(); // The offending line!
}
}
Games Feed Walk Status
test1
test1
. What would you like to do?
Games Feed Walk Status
Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Scanner.java:862)
at java.util.Scanner.next(Scanner.java:1371)
at Test.main(Test.java:11)

关闭扫描器还将刷新底层流并将其释放回操作系统,然后认为它对于应用程序生命周期的剩余部分毫无用处。如果您需要重复使用扫描仪,则应在且仅在使用完毕后将其关闭。

关于java - 不等待扫描仪输入,抛出 ElementNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55766262/

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