Я пытаюсь заставить сканер вводить данные в цикле. Как только пользователь хочет закончить, он может выйти из этого цикла. Я пробовал много разных способов сделать это, но всегда есть какая-то проблема. Это код:
private void inputEntries() {
Scanner sc = new Scanner(System.in);
System.out.println("Continue?[Y/N]");
while (sc.hasNext() && (sc.nextLine().equalsIgnoreCase("y"))) {//change here
System.out.println("Enter first name");
String name = sc.nextLine();
System.out.println("Enter surname");
String surname = sc.nextLine();
System.out.println("Enter number");
int number = sc.nextInt();
Student student = new Student(name, surname, number);
students.add(student);
try {
addToFile(student);
} catch (Exception ex) {
Logger.getLogger(TextReader.class.getName()).log(Level.SEVERE, null, ex);
}
System.out.println("Continue?[Y/N]");
}
}
Проблема с приведенным выше кодом, которая также возникает при использовании разных методов, которые я пробовал, заключается в том, что когда пользователь вводит Y, Scanner
пропустит первый ввод имени и перейдет к фамилии. Если пользователь вводит N, цикл останавливается корректно. Кто-то может объяснить, почему это происходит, и как это преодолеть с помощью класса Scanner
?
p.s: выполнение чего-то вроде while(sc.nextLine().equals("Y"))
приведет к завершению цикла до получения ввода от пользователя после первого запуска цикла.