How to make Java wait for user input

I'm trying to make an IRC robot for my channel I hope the robot can get commands from the console In order to make the main loop wait for the user to enter something I added to the loop:

while(!userInput.hasNext());

It doesn't seem to work I've heard of BufferedReader, but I've never used it, and I'm not sure if it will solve my problem

while(true) {
        System.out.println("Ready for a new command sir.");
        Scanner userInput = new Scanner(system.in);

        while(!userInput.hasNext());

        String input = "";
        if (userInput.hasNext()) input = userInput.nextLine();

        System.out.println("input is '" + input + "'");

        if (!input.equals("")) {
            //main code
        }
        userInput.close();
        Thread.sleep(1000);
    }

Solution

You do not need to check for available input, wait and Hibernate until scanner Nextline() will block until a line is available

Take a look at the example I wrote to demonstrate it:

public class ScannerTest {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(system.in);
        try {
            while (true) {
                System.out.println("Please input a line");
                long then = System.currentTimeMillis();
                String line = scanner.nextLine();
                long Now = System.currentTimeMillis();
                System.out.printf("Waited %.3fs for user input%n",(Now - then) / 1000d);
                System.out.printf("User input was: %s%n",line);
            }
        } catch(IllegalStateException | NoSuchElementException e) {
            // system.in has been closed
            System.out.println("system.in was closed; exiting");
        }
    }
}

Therefore, all you have to do is use scanner Nextline(), your application will wait until the user enters a newline character You also don't want to define your scanner in the loop and turn it off, because you will use it again in the next iteration:

Scanner userInput = new Scanner(system.in);
while(true) {
        System.out.println("Ready for a new command sir.");

        String input = userInput.nextLine();
        System.out.println("input is '" + input + "'");

        if (!input.isEmpty()) {
            // Handle input
        }
    }
}
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
分享
二维码
< <上一篇
下一篇>>