Java 扫描仪HasNextLine始终返回false

Java 扫描仪HasNextLine始终返回false,java,java.util.scanner,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 = ne

我在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函数,我现在已将其删除,并正确显示了文字。

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


请参阅:

在我的例子中,一个代码中有多个Scanner(System.In)实例,几个人都会碰到它

如果其中一个实例调用“close”,它将对所有实例关闭,并且文件不会重新打开


调用close hasNextLine()后,始终将返回false。

如果
hasNextLine
为false,为什么要重新输入循环?客户端和
ThreadMessage
thread做什么?我看不到代码中有问题……我可以运行它succcessfully@MikeSamuel我添加了ThreadMessage的代码和客户端类的主体。如果只返回false,我将在我的第一个端口中添加此详细信息