我正在尝试从Scanner类中获取输入,但每次调用它时,它都会崩溃整个程序。当试图捕获异常并打印消息时,没有任何显示,所以我甚至不确定问题的根源是什么。一些背景信息是这个类由main方法调用,该方法还有一个正在运行的Scanner,但在调用该类的方法之前关闭。
public class UserHandler {
static Scanner userInput1 = new Scanner(System.in);
static void addInterface() throws IOException, FileNotFoundException{
boolean addMore = true;
while(addMore){
System.out.println("Please enter restaurant name: ");
String name = userInput1.next();
if(!FileHandler.containsName(name)){
System.out.println("Name already exists!");
}else{
String[] tags = new String[5];
System.out.print("\nPlease enter tags seperated by spaces: ");
for(int i = 0; i < tags.length; i++){
if(userInput1.hasNext()){
tags[i] = userInput1.next();
}
else{
break;
}
}
FileHandler.addName(name,tags);
}
}
}
}
我已多次尝试过,无法重现此问题。我假设它与语法有关,或者没有正确调用的东西。无论哪种方式,我都花了相当多的时间来修复它,但无济于事。
答案 0 :(得分:1)
我想您可以在第一次调用扫描程序(System.in)时获得对命令行的访问权限,然后关闭它,当您第二次尝试访问它时收到 IllegalStateException 。
尝试在两种情况下使用扫描程序(System.in)的相同实例。
有关详细信息,请参阅http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Scanner.html