我一直在思考Scanner如何工作,经过一段时间的钻研后,总算理解了。以下是代码:
Scanner sc = new Scanner(System.in);
String s = sc.nextLine();
String p = sc.nextLine();
System.out.println(s);
System.out.println(p);
System.out.println(sc.hasNextLine());
我所期望的:
Love is good <- press ENTER
Love is blind <- press ENTER
Love is good <- output
Love is blind <- output
false
我拥有的:
Love is good <- I press ENTER
Love is blind <- I press ENTER
Love is good <- output
Love is blind <- output
<- press ENTER
true <- output
我不理解的是:
- 为什么在立即打印此行 - System.out.println(sc.hasNextLine()); - 时,它让我再次按ENTER键
- 当没有更多行或符号时,它打印true而不是false
我已经阅读了十几篇关于在nextInt()之后使用hasNextLine()以及关于nextInt()不消耗行中的最后一个符号的stackoverflow答案,但我不明白为什么,即使我在这里没有使用nextInt(),我仍然需要再按一次ENTER,并且为什么 hasNestLine() 是true。