The difference in execution, with change in orders, is due to the fact that new-line is not consumed by nextInt()
, nextDouble()
, next()
or nextFoo()
methods.
Therefore, whenever you place a call to nextLine()
after any of those methods, it consumes that newline, and virtually skips over that statement.
The fix is simple, don't use nextFoo()
methods before nextLine()
. Try :-
i2 = Integer.parseInt(scan.nextLine());
d2 = Double.parseDouble(scan.nextLine());
s2 = scan.nextLine();
Or else, you could consume the new-line by
i2 = scan.nextInt();
d2 = scan.nextDouble();
scan.nextLine(); //---> Add this before the nextLine() call
s2 = scan.nextLine();
Order#3 works fine, as nextLine()
is the first statement, and therefore, there are no left-over characters to consume.
Related: Scanner is skipping nextLine() after using next(), nextInt() or other nextFoo() methods
No comments:
Post a Comment