Я немного устал от своего мозга, пытаясь понять, как работает Сканер. Итак, вот код:
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, в то время как больше нет строк или символов
Что я прочитал: я прочитал дюжину ответов stackoverflow об использовании hasNextLine() после nextInt() и о том, как nextInt() не потребляет окончательный символ в строке, но я не Не понимаю, почему, хотя я не использую nextInt() здесь, мне еще нужно нажать ENTER еще раз и почему hasNextLine() является истинным.