2014-11-21 3 views
0

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

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(); 
    } 
} 

Благодарим за помощь, которую вы можете дать.

ответ

2

Причина, когда вы вводите отметки, нажимаете «говорить» 56 < enter>. Ваш API nextInt просто читает 56 и оставляет вход, который потребляется nextLine api.

Симметричного, чтобы избежать этого, как раз перед вашей SYSOUT ниже:

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

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

scan.nextLine(); 

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

 Смежные вопросы

  • Нет связанных вопросов^_^