Закрытие сканера выбрасывает java.утиль.Исключение NoSuchElementException
Я пишу боевую систему RPG с нуля на Java, амбициозно, не так ли? Ну, у меня проблемы. Вот мой код:
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();
}
когда он попадает в эту точку в коде, я получаю:
что вы будете делать? Say (Fight) (Run) (Use Item)
Исключение в потоке" main " java.утиль.NoSuchElementException: строка не найдена
на Яве.утиль.Сканер.строки(неизвестный источник)
на Бороться.turnChoice (Combat.java: 23)
класс называется Combat, я просто хочу, чтобы он дал возможность сражаться или запускать или использовать элементы, я сначала пытаюсь использовать метод боя. Пожалуйста, помогите, я вроде как новичок в Java, поэтому не делайте вещи слишком сложными, если это возможно.
1 ответов
когда вы читаете с помощью Scanner
С 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!