[英]Closing a Scanner throws 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();
}
当它到达代码中的这一点时,我得到:
你会怎么做? 说(战斗)(奔跑)(使用物品)
线程“主”中的异常java.util.NoSuchElementException:找不到行
在java.util.Scanner.nextLine(未知来源)
在Combat.turnChoice(Combat.java:23)
该类称为Combat,我只希望它提供一个战斗或运行或使用物品的选项,我首先尝试仅使用fight方法。 请帮助,我是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!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.