用Java重新创建扫描仪

a3d*_*fcv 0 java console

我正在用Java编写游戏,并且有一种方法要求用户从Console中输入值:

public String getUserInput() {
    try (Scanner scan = new Scanner(System.in)) {
        String s = scan.nextLine();
        return s;
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是我想多次调用此方法,具体取决于外部参数,但我事先不知道,是否会再次调用。

但是当我在第二次调用中调用这样的方法时,我得到了

Exception in thread "main" java.util.NoSuchElementException: No line found
Run Code Online (Sandbox Code Playgroud)

问题:

  • 我不明白此错误的根本原因:我知道我无法重新打开扫描仪,但是在这里我不重新打开它,而是重新创建它。
  • 我该如何处理?

Kay*_*man 5

不要重新打开或重新创建它。Scanner在您的程序期间使用一个。

关闭a Scanner(在这种情况下,使用您的try-with-resources块)将关闭其输入,在这种情况下System.in。您不想关闭它,因为您无法重新打开它。