关闭扫描程序会抛出java.util.NoSuchElementException

我正在用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”中的exceptionjava.util.NoSuchElementException:找不到行
在java.util.Scanner.nextLine(未知来源)
在Combat.turnChoice(Combat.java:23)

这个类叫做Combat,我只是想让它给出一个打击或运行或使用物品的选项,我首先尝试的是战斗方法。 请帮助,我是Java的新手,所以如果可能的话,不要让事情太复杂。

当您使用System.in Scanner进行读取时,不应关闭任何Scanner实例,因为关闭一个将关闭System.in ,当您执行以下操作时,将抛出NoSuchElementException

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