在while循环中获取用户输入

时间:2015-09-12 01:04:35

标签: java input java.util.scanner

我正在尝试使用Kryonet进行通信来创建基本的IRC。我遇到的问题是,在我的代码中,我无法安全地拥有一个允许用户键入和发送消息的主while循环,因为Scanner发出错误并且似乎跳过调用nextLine()。我想要做的是让扫描仪在继续之前等待用户输入。

    Scanner input = new Scanner(System.in);

    while (running){

        System.out.print(":");

        message.text = input.nextLine();

        client.sendTCP(message);

    }

    input.close();

更确切地说,该计划将首先提出一个":"在行的开头,然后在输入后将获得用户键入的任何内容,然后将其发送到服务器。 这是我得到的错误:

:Exception in thread "main" java.util.NoSuchElementException: No line found
at java.util.Scanner.nextLine(Scanner.java:1585)
at com.andrewlalisofficial.ChatClient.main(ChatClient.java:51)

2 个答案:

答案 0 :(得分:2)

您正在关闭System.in(通过Scanner) - 请勿这样做。如果你关闭它,然后尝试使用新的Scanner再次读取它,它将抛出你发布的异常。

答案 1 :(得分:0)

Scanner input = new Scanner(System.in);
while (true){
    System.out.print(":");
    String text = input.nextLine();
    System.out.println(text);
}

这是在这里工作。