Сканер пропускает вход для первого входа в цикле

У меня есть программа для записи в текстовый файл, просто используя базовый ввод со сканера. У меня есть, так что он проходит через вопросы, а затем да нет, чтобы добавить еще один вклад. Когда пользователь (или тестер, являющийся мной) вводит 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);

Другие вопросы по тегам