Я читаю данные пользователя (оценка экзамена). Затем я проверяю оценку. После этого я показываю оценку. Затем я спрашиваю у пользователя, хотят ли они ввести другой класс, если они скажут «да», тогда я прошу их ввести еще один экзамен. Но здесь я использую try/catch для проверки типа данных, которые они вводят. Если они вводят что-нибудь другое, то целое число, то я пытаюсь снова зациклиться и спросить, хотят ли они ввести другой класс, но также отобразить сообщение «Ввести целочисленное сообщение об ошибке». Однако в этом случае вы хотите ввести еще один класс дважды, а счет экзамена дважды, он печатает старый счет, и он печатает, хотите ли вы дважды ввести другое утверждение класса, почему это происходит?Неправильная печать петли
import java.util.InputMismatchException;
import java.util.Scanner;
public class CatchingException {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int score;
String choice;
boolean loop = true;
try {
System.out.println("Enter your percentage mark: ");
score = scan.nextInt();
do {
if(score <40) {
System.out.println("You FAILED");
}else if(score >=40 && score <50){
System.out.println("Your grade: PASS MARK");
}else if(score >=50 && score <60) {
System.out.println("Your grade: 2:2");
}else if (score >=60 && score <70) {
System.out.println("Your grade: 2:1");
}else {
System.out.println("Your grade: 1:1");
}
System.out.println("Do you want to enter another grade: ");
choice = scan.next();
if(choice.equalsIgnoreCase("yes")) {
System.out.println("Enter your percentage mark: ");
try{
score = scan.nextInt();
}catch(InputMismatchException e) {
System.err.println("Enter Integer");
loop = false;
}
}
}while(!loop);
}catch(InputMismatchException e) {
System.err.println("Incorrect Input ");
}
System.out.println("program terminated");
scan.close();
}
}
Измените текст. Это почти невозможно прочитать. – SklogW
@Pshemo Я считаю, что OP имеет дело с концевой строкой слева в буфере клавиатуры 'nextInt'. –
@ PM77-1 '#nextInt()' не «заботится» о пробелах. – Tom