【发布时间】:2018-10-11 10:17:37
【问题描述】:
这是我的工作代码。
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
}
现在我不明白:
如果我在调用keepPlaying(myOtherScanner) 之前关闭myScanner,myOtherScanner.next() 将抛出:
NoSuchElementException
根据我的发现,关闭单个 Scanner 似乎会关闭 System.in。对吗?
什么是绕过它的好方法? 只在最后关闭?
使用单个Scanner 更好吗?
我是否使用Scanners 作为全局类元素?
我只是不关闭Scanners吗?
【问题讨论】:
标签: java java.util.scanner system.in