Использование сканера.nextLine () [дубликат]
На этот вопрос уже есть ответ:
Scanner пропускает nextLine () после использования next () или nextFoo ()? 15 ответовУ меня возникли проблемы при попытке использовать метод nextLine () из java.util.Scanner.
Вот что я пытался:
import java.util.Scanner;
class TestRevised {
public void menu() {
Scanner scanner = new Scanner(System.in);
System.out.print("Enter a sentence:\t");
String sentence = scanner.nextLine();
System.out.print("Enter an index:\t");
int index = scanner.nextInt();
System.out.println("\nYour sentence:\t" + sentence);
System.out.println("Your index:\t" + index);
}
}
Пример №1: Этот пример работает как задумано. ЛинияString sentence = scanner.nextLine();
ожидает ввода, прежде чем перейти кSystem.out.print("Enter an index:\t");
.
Это производит вывод:
Enter a sentence: Hello.
Enter an index: 0
Your sentence: Hello.
Your index: 0
// Example #2
import java.util.Scanner;
class Test {
public void menu() {
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.println("\nMenu Options\n");
System.out.println("(1) - do this");
System.out.println("(2) - quit");
System.out.print("Please enter your selection:\t");
int selection = scanner.nextInt();
if (selection == 1) {
System.out.print("Enter a sentence:\t");
String sentence = scanner.nextLine();
System.out.print("Enter an index:\t");
int index = scanner.nextInt();
System.out.println("\nYour sentence:\t" + sentence);
System.out.println("Your index:\t" + index);
}
else if (selection == 2) {
break;
}
}
}
}
Пример № 2: Этот пример не работает как задумано. В этом примере используется цикл while и структура if-else, позволяющая пользователю выбирать, что делать. Как только программа доберется доString sentence = scanner.nextLine();
, он не ждет ввода, а выполняет строкуSystem.out.print("Enter an index:\t");
.
Это производит вывод:
Menu Options
(1) - do this
(2) - quit
Please enter your selection: 1
Enter a sentence: Enter an index:
Что делает невозможным ввод предложения.
Почему пример № 2 не работает как задумано? Единственная разница между Ex. 1 и 2 - это пример 2 имеет цикл while и структуру if-else. Я не понимаю, почему это влияет на поведение scanner.nextInt ().