Java Scanner генерирует исключение NoSuchElementException
Я изучаю Java, и поэтому я написал простую игру в догадки. Сейчас я пытаюсь улучшить его, добавив дополнительные функции, но я застрял в попытке сделать его более "модульным", то есть: использовать больше методов по сравнению с длинным методом main().
У меня есть это:
while(!guessed) {
System.out.println("Guess a number between 1 and 1000.");
guessedNum = Integer.parseInt(input.nextLine());
numCheck(guessedNum);
}
timeEnd = System.currentTimeMillis();
input.close();
System.out.println("Seconds to guess: " + (timeEnd - timeStart)/1000);
который работает просто отлично, но если я попытаюсь создать отдельный метод для "предположения числа", например так:
public static int guessNum() {
System.out.println("Escriba un numero entre 1 y 1000.");
Scanner input = new Scanner(System.in);
guessedNum = Integer.parseInt(input.nextLine());
input.close();
return guessedNum;
}
выдает следующую ошибку:
Exception in thread "main" java.util.NoSuchElementException: No line found
at java.util.Scanner.nextLine(Unknown Source)
at game.Guess.guessNum(Guess.java:40)
at game.Guess.start(Guess.java:28)
at game.Game.main(Game.java:21)
Я пытался поиграть, используя разделитель и nextLine(), но это всегда одна и та же ошибка. Также я попытался отладить его с помощью eclipse, но когда он переходит на nextLine, он переходит на страницу с сообщением "Источник не найден".
Любая подсказка? Я могу изменить свой вопрос, если это необходимо.
1 ответ
Ваше закрытие Scanner
в этой строке:
input.close();
который также закрывает System.in
, Поэтому в следующий раз, когда вы будете читать с того же сканера, вы получите эту ошибку.