扫描仪HasNextLine始终返回false

时间:2014-04-11 20:12:25

标签: java java.util.scanner

我正面临着Scanner.hasNextLine()的这个奇怪问题。 我没有使用Scanner类,但我曾经使用Scanner.hasNextLine()作为循环的条件来连续获取用户的输入,但在这部分代码中它总是返回false !

public static void main(String[] args) throws IOException {
    String s = "";
    Scanner ssc = new Scanner(System.in);
    Client cli = new Client();
    cli.HLO();
    Thread t = new Thread(new ThreadMessage(cli));//Thread that asks user for input using Scanner and closing it then
    t.start();
    boolean b = ssc.hasNextLine();
    while (true) {
        b = ssc.hasNextLine();
        System.out.println(b);
        if (b) {
            s = ssc.nextLine();
            System.out.println("you wrote" + s);
            cli.dp.setData(s.getBytes());
            cli.ds.send(cli.dp);
        }
    }
}

并且作为输入我只有一个带有单词false

的行循环

有人知道它为什么会这样吗?

编辑:似乎错误来自使用另一台扫描仪的HLO功能我已将其删除并且现在正确显示。

2 个答案:

答案 0 :(得分:2)

尝试使用.hasNext()方法,而不是使用.hasNextLine()方法 您遇到问题,因为如果此扫描程序的输入中有另一行,.hasNextLine() 方法将返回true。但是,如果此扫描程序在其输入中有另一个标记,则.hasNext()方法返回true。

参考:http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html

答案 1 :(得分:0)

在我的情况下,我的代码中有多个Scanner(System.in)实例,该实例被多个人触摸。

如果其中一个实例调用“ 关闭”,它将全部关闭,并且不会重新打开文件。

在调用hasNextLine()结束后,总是返回false。