Java Scanner hasNext() doesn't return false

大城市里の小女人 提交于 2019-11-30 06:04:05

问题


I am trying to read input continuously from the user until the user types quit. I am testing it by just typing 'quit' but console.hasNext() doesn't seem to be returning false. In fact it seems that the program is blocked on line 7(hasNext() line). Any ideas?

    boolean bool = true;
    while (bool) {
        System.out.println("Type 'quit':");
        Scanner console = new Scanner(System.in);
        if (console.next().equals("quit")) {
            System.out.println("You typed quit");
            System.out.println("check: " + console.hasNext()); // This line doesnt print
            bool = false;
        }
    }

回答1:


If your Scanner is declared as System.in, it will be asking System.in if there is a next value to be received. The in class will then wait for the user to input something, then return true.

Reserve hasNext() for things like files, where the input size is fixed. That way, when Scanner queries the file, it has a definite hasNext().

Instead, I suggest grabbing the next value as a String, then checking if it matches the integer format. If it does, then convert it, otherwise, handle it however you'd like.



来源:https://stackoverflow.com/questions/15847036/java-scanner-hasnext-doesnt-return-false

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!