GET JAVA TO WAIT FOR USER INPUT

Barbara Jones

Total Post:13

Points:91
Posted by  Barbara Jones
Java 
 1089  View(s)
Ratings:
Rate this:

I’m attempt to make the main loop wait for the user to input something I added the loop:

while(!userInput.hasNext());

this is not work correctly. I have heard BufferedReader but I have never used it. So please 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);

    }

  1. Lillian Martin

    Post:27

    Points:189
    Re: Get java to wait for user input

    There is no need for you to check for available input waiting and sleeping until there is since Scanner.nextLine() will block until a line is available.

    Have a look at this 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");

            }

        }

        }

    Please input a line

    hello

    Waited 1.892s for user input

    User input was: hello

    Please input a line

    ^D

    System.in was closed; exiting

     

    So all you have to do is to use Scanner.nextLine() and your app will wait until the user has entered a newline. You also don't want to define your Scanner inside the loop and close it since you're going to 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

            }

        }

        }

Answer

NEWSLETTER

Enter your email address here always to be updated. We promise not to spam!