Это мой рабочий код.
public static void play() {
Scanner myScanner = new Scanner(System.in);
Scanner myOtherScanner = new Scanner(System.in);
while (!endCondition()) {
//stuff
shoot(myScanner);
}
keepPlaying(myOtherScanner);
myScanner.close();
myOtherScanner.close();
}
Метод получения myScanner
:
static void shoot(Scanner sc) {
int bullet;
//Stuff
bullet = Integer.parseInt(sc.next());
//More stuff
}
Метод получения myOtherScanner
:
static void keepPlaying(Scanner myOtherScanner) {
//Stuff
int option = Integer.parseInt(myOtherScanner.next());
//More stuff
}
Что теперьЯ не понимаю:
Если я закрою myScanner
перед вызовом keepPlaying(myOtherScanner)
, myOtherScanner.next()
выдаст:
NoSuchElementException
Сто, что я обнаружил, похоже, что закрытие одного сканера закрывает System.in
.Это правильно?
Какой хороший способ обойти это?Закрытие только в самом конце?
Лучше ли использовать один Scanner
?
Использую ли я Scanners
в качестве элементов глобального класса?
Разве я не закрываю Scanners
?