Java Scanner why is nextLine() in my code being sk

2019-01-28 21:30发布

问题:

This question already has an answer here:

  • Scanner is skipping nextLine() after using next() or nextFoo()? 15 answers
    Scanner kb = new Scanner(System.in);
    System.out.println("Inserting L");
    int L = kb.nextInt();   
    System.out.println("Inserting N");
    int N = kb.nextInt();
    System.out.println("Inserting x");
    String x = kb.nextLine();
    System.out.println(x);
    System.out.println("You inputed L,N,x");

Why is there no prompt for nextLine() in this code?

回答1:

Use:

String x = kb.next();

instead of kb.nextLine().

This is because nextInt() reads just the number, not the end of line or anything after the number. When you call nextLine() it reads the remainder of the same line and does not wait for input.

Ideally you should call kb.nextLine() the line after your code for nextInt() to ignore the rest of the line.



回答2:

Scanner kb = new Scanner(System.in);
    System.out.println("Inserting L");
    int L = kb.nextInt();   
    System.out.println("Inserting N");
    int N = kb.nextInt();
    System.out.println("Inserting x");
    String x = kb.next();
    System.out.println(x);
    System.out.println("You inputed L,N,x");

try this one...