Сканер пропускает вход для первого входа в цикле
У меня есть программа для записи в текстовый файл, просто используя базовый ввод со сканера. У меня есть, так что он проходит через вопросы, а затем да нет, чтобы добавить еще один вклад. Когда пользователь (или тестер, являющийся мной) вводит y, чтобы сделать это снова, он задает 2 главных вопроса одновременно, чтобы не получить ввод для первого вопроса, есть ли причина, почему это происходит? Вот пример Хотите создать еще одну запись? Да / Нет y Какой код курса для данного задания? Как называется это задание?
do{
System.out.println("What is the course code for the assignemnt?")
course = s.nextLine();
System.out.println("What is the name of the assignment?");
gName = s.nextLine();
System.out.println("What did you get on the assignment?");
yourGrade = s.nextLine();
System.out.println("What was the assignment out of?");
gMax = s.nextLine();
System.out.println("What was the assignment weighted?");
gWeight = s.nextLine();
pw.printf("%s|%s|%s|%s|%s",course, gName, yourGrade, gMax, gWeight);
pw.println("");
System.out.println("Would you like to create another entry? Y/N");
YN = s.next().charAt(0);
}
while(YN == 'Y' || YN == 'y');
pw.close();
}
3 ответа
YN = s.next().charAt(0);
не будет использовать символ конца строки, который будет использован следующим nextLine
(то есть на следующей итерации), так что вам нужно к другому nextLine
после этого. Или прочитайте строку с nextLine
и использовать charAt(0)
на что вот так: YN = s.nextLine().charAt(0);
Менять YN = s.next().charAt(0);
в YN = s.nextLine().charAt(0);
Я изменил это здесь, и это сработало для меня,
Использование YN = s.nextLine().charAt(0);
вместо YN = s.next().charAt(0);