Java - 扫描程序不要求输入,然后崩溃

时间:2014-01-04 09:00:58

标签: java java.util.scanner

我正在尝试从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);
        }
    }
}
}

我已多次尝试过,无法重现此问题。我假设它与语法有关,或者没有正确调用的东西。无论哪种方式,我都花了相当多的时间来修复它,但无济于事。

1 个答案:

答案 0 :(得分:1)

我想您可以在第一次调用扫描程序(System.in)时获得对命令行的访问权限,然后关闭它,当您第二次尝试访问它时收到 IllegalStateException

尝试在两种情况下使用扫描程序(System.in)的相同实例。

有关详细信息,请参阅http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Scanner.html