Java扫描器不会等待用户输入

这个问题在这里已经有了答案:

  • 扫描仪使用next()或nextFoo()后跳过nextLine()? 15个答案

  • 您可能以前调用过像nextInt()这样的方法。 因此一个这样的程序:

    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();
    

    展示你所看到的行为。

    问题是nextInt()不会消耗'n' ,所以nextLine()的下一次调用会消耗它,然后等待读取y的输入。

    在调用nextLine()之前,您需要使用'n'

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

    (实际上更好的方法是在nextInt()之后直接调用nextLine() )。


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

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

    上一篇: Java Scanner doesn't wait for user input

    下一篇: Both next() and nextLine() not helping to store name with spacing