gpt4 book ai didi

Java Scanner 获取输入,调用一个方法,然后返回读取更多输入无效

转载 作者:行者123 更新时间:2023-11-30 09:26:08 24 4
gpt4 key购买 nike

我有一个名为 PlayGame 的类,在 main 方法中我有这段代码:

public class PlayGame {
public static void main(String args[]) {
while (true) {
System.out.println("Where would you like your adventure to begin? (Enter a number)\n");
System.out.println("1. Play the Game\n2. Quit the Game");
Scanner userInput = new Scanner(System.in);
String userAction;
try {
userAction = userInput.nextLine().trim();
if (userAction.equals("1")) {
pressPlay();
} else if (userAction.equals("2")) {
System.exit(0);
} else {
System.out.println("Sorry, your selection wasn't valid.");
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
}

这一切都很好,当用户键入 1 时,调用 pressPlay() 并继续执行下一个方法,该方法会执行一些操作,主要是将内容打印到屏幕。但是,当我离开 pressPlay() 方法并返回到这个主要方法时,我开始收到读取输入的错误:

java.util.NoSuchElementException: No line found
at java.util.Scanner.nextLine(Scanner.java:1516)
at PlayGame.main(PlayGame.java:17)

你能告诉我如何解决这个问题吗?非常感谢!

编辑 - 我只是希望它返回到 main 方法中的 while 循环并再次请求 1 或 2,并取一个有效的 1 或 2。我的代码一直到userAction = userInput.nextLine().trim(); 在离开 pressPlay() 方法后,不再等待用户第二次输入。

编辑 - pressPlay() 方法生成一个网格,玩家可以通过键入特定命令在其中四处移动。它内部有一个 while (true) { 循环,以及接受玩家输入的 Scanner userInput = new Scanner(System.in);。如果玩家键入 quit,它会调用 while 循环的 break 并返回到 main 方法,然后问题就出现了。

最佳答案

我已经设法解决了这个问题。

在我的主要方法和我的 pressPlay() 方法中,我创建了单独的扫描仪从 System.in 获取输入,这导致了问题,因为它不会不再从 main 方法中获取输入。相反,我将 Scanner 从 main 方法中取出并将其放在 public class PlayGame { 之后,并在我的两个方法中使用相同的扫描器,而不是单独的方法。

感谢 Jayamohan 和 Hossam 的投入(:

关于Java Scanner 获取输入,调用一个方法,然后返回读取更多输入无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15036445/

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