Sivarama Krishnan Ответов: 1

У меня есть проблема с доступом к методу, содержащему класс сканера, более одного раза, когда переменная закрыта.


Когда я обращаюсь к методу, содержащему класс сканера более одного раза (с переменной класса сканера, закрытой каждый раз в конце метода), я сталкиваюсь с проблемой. Вот фрагмент кода, с которым у меня возникли проблемы: все, что я пытаюсь сделать, это вернуть строку и сохранить ее в локальной переменной в Main().

public static String setName() {
   System.out.println("Type in a person's name: ");
   Scanner scanName = new Scanner(System.in);
   String perName = scanName.nextLine();
   scanName.close();
   return perName;
   }

   public static void main(String[] args) {
   String someName;
   someName = setName();
   someName = setName();


При попытке дозвониться до
SetName()
функция во второй раз, я получаю следующую ошибку:

Exception in thread "main" java.util.NoSuchElementException: No line found
at java.util.Scanner.nextLine(Unknown Source)


Что я уже пробовал:

Я попытался прокомментировать ситуацию.
scanName.close();
в методе SetName() и проблема будет решена. Но я также попытался вызвать функцию и присвоить ее другой строковой переменной, что тоже не сработало. Я хотел бы знать, что пошло не так.

1 Ответов

Рейтинг:
7

CPallini

Закройте окно Scanner только после того, как ваше приложение закончит с ним. Смотрите, например: java - можно использовать сканер только один раз - переполнение стека[^].