关闭扫描程序会引发java.util.NoSuchElementException

关闭扫描程序会引发java.util.NoSuchElementException,java,string,exception,element,Java,String,Exception,Element,我正在用Java从头开始编写一个RPG战斗系统,对吗?嗯,我有点麻烦。这是我的代码: void turnChoice() { System.out.println("What will you do? Say (Fight) (Run) (Use Item)"); Scanner turnChoice = new Scanner(System.in); switch (turnChoice.nextLine()) { case ("Fight"):

我正在用Java从头开始编写一个RPG战斗系统,对吗?嗯,我有点麻烦。这是我的代码:

void turnChoice() {
    System.out.println("What will you do? Say (Fight) (Run) (Use Item)");
    Scanner turnChoice = new Scanner(System.in);
    switch (turnChoice.nextLine()) {
        case ("Fight"):
            Combat fighting = new Combat();
            fighting.fight();
        default:
    }

    turnChoice.close();
}
当它到达代码中的该点时,我得到:

你会怎么做?说(打)(跑)(使用物品)
线程“main”java.util.NoSuchElementException中出现异常:未找到任何行
位于java.util.Scanner.nextLine(未知源)
turnChoice(batch.java:23)


这个类叫做战斗,我只是想让它提供一个选择来战斗、奔跑或使用物品,我只是先尝试战斗方法。请帮忙,我对Java有点陌生,所以如果可能的话,不要把事情弄得太复杂。

当你从
系统中使用
Scanner
阅读时。在
中,你不应该关闭任何
Scanner
实例,因为关闭一个实例将关闭
系统。在
中,当你执行以下操作时,
将抛出NoTouchElementException

Scanner sc1 = new Scanner(System.in);
String str = sc1.nextLine();
...
sc1.close();
...
...
Scanner sc2 = new Scanner(System.in);
String newStr = sc2.nextLine();      // Exception!

让你完成
导入java.util.Scanner?什么是Combat.java第23行?这不会导致内存泄漏吗?
系统中的
被JVM关闭,您不应该关闭它。别担心。扫描器只是缓冲区阅读器。@mostruash,所以我们不应该关闭任何扫描器,每当应用程序关闭时,所有扫描器都将从内存中清除,对吗?