Java Scanner doesn't wait for user input

This question already has an answer here:

  • Scanner is skipping nextLine() after using next() or nextFoo()? 15 answers

  • It's possible that you are calling a method like nextInt() before. Thus a program like this:

    Scanner scanner = new Scanner(System.in);
    int pos = scanner.nextInt();
    System.out.print("X: ");
    String x = scanner.nextLine();
    System.out.print("Y: ");
    String y = scanner.nextLine();
    

    demonstatres the behavior you're seeing.

    The problem is that nextInt() does not consume the 'n' , so the next call to nextLine() consumes it and then it's waiting to read the input for y .

    You need to consume the 'n' before calling nextLine() .

    System.out.print("X: ");
    scanner.nextLine(); //throw away the n not consumed by nextInt()
    x = scanner.nextLine();
    System.out.print("Y: ");
    y = scanner.nextLine();
    

    (actually a better way would be to call directly nextLine() after nextInt() ).


    只要为你的代码尝试这个构造构造:

        System.out.print("X: ");
        scanner.nextLine();
        x = scanner.nextLine();
        System.out.print("Y: ");
        scanner.nextLine();
        y = scanner.nextLine();
    
    链接地址: http://www.djcxy.com/p/96070.html

    上一篇: 扫描仪nextLine Java错误

    下一篇: Java扫描器不会等待用户输入