8

我正在用 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();
}

当它在代码中达到这一点时,我得到:

你会怎么做?说(战斗)(运行)(使用项目)
线程“主”java.util.NoSuchElementException 中的异常: 在 Combat.turnChoice(Combat.java:23)
的 java.util.Scanner.nextLine(未知来源)处找不到行

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

4

1 回答 1

27

当您使用Scannerfrom阅读时System.in,您不应该关闭任何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!
于 2013-03-15T03:09:09.797 回答