Код печатает строки дважды в цикле while?

В этом коде пользователь вводит тестовую отметку, и он должен распечатать оценку и спросить, хочет ли пользователь ввести другую оценку, однако моя проблема в том, что он печатает этот бит дважды, и я не знаю, Зачем?

import java.util.Scanner;

public class ExamGrades {

    public static void main(String[] args) {
        int mark;
        String answer;
        Scanner scan = new Scanner(System.in);

        System.out.println("Enter student mark: ");
        mark = scan.nextInt();
        while (mark >= 0) {

            if (mark < 40) {
                System.out.println("FAILED.");
            } else if (40 <= mark && mark <= 49) {
                System.out.println("3rd");
            } else if (50 <= mark && mark <= 59) {
                System.out.println("2/2");
            } else if (60 <= mark && mark <= 69) {
                System.out.println("2/1");
            } else if (mark >= 70 && mark <= 100) {
                System.out.println("1st");
            } else if (mark > 100) {
                System.out.println("Invalid mark");
            }

            System.out.println("Enter another mark? Yes or No: ");
            answer = scan.nextLine();

            if (answer.equalsIgnoreCase("yes")) {
                System.out.println("Enter student mark: ");
                mark = scan.nextInt();
            } else if (answer.equalsIgnoreCase("no")) {
                mark = -1;
                System.out.println("Thank you.");
            }

        }
        scan.close();
    }
}

Спасибо за любую помощь, которую вы можете оказать.

1 ответ

Решение

Причина в том, что когда вы вводите метки, вы нажимаете скажем 56. Ваш API nextInt просто читает 56 и оставляет enter, который используется API NextLine.

Чтобы избежать этого, сделайте следующее, прежде чем ваш sysout ниже:

System.out.println("Enter another mark? Yes or No: ");

Введите следующую строку:

scan.nextLine();

Так что ваш будет использован этим API, и вы сможете успешно двигаться вперед, читая вводимые пользователем данные Да / Нет.

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