Я новичок в программировании и работаю над заданием на Java, где пользователь называет файл. Затем файл передается в метод для записи пользователем в тестовые оценки, затем передается в другой метод для чтения и отображения тестовых оценок со средним значением по классу.
В настоящее время я работаю над методом записи оценок учащихся в файл, который я успешно выполнил, но мне нужно реализовать проверку ошибок, если введено нечисловое значение. Я использовал цикл while с try и catch для InputMismatchException, цикл работает иногда. Если на первой итерации цикла введен неверный ввод, он поймает его и будет повторять, однако, если на любой другой итерации будет введен неверный ввод, он поймает исключение InputMismatchException, но он также выйдет из цикла и продолжит к следующему методу. Как бы я получить цикл, чтобы начать на итерации цикла, который был недействительным. Я был бы признателен за любую помощь, и мне жаль, если мой код плохо написан, так как я очень плохо знаком с программированием.
Вот метод, над которым я работаю:
public static void inputScores(String newFile)
{
Scanner scan = new Scanner(System.in);
Formatter write;
try
{
write = new Formatter(newFile +".txt");
double score = 0.0;
int count = 1;
boolean again = false;
while(!again){
try
{
while(score >= 0)
{
System.out.print("Please enter student " + count + "'s test score, input -1 to quit:\n>");
score = scan.nextDouble();
again = true;
count++;
if(score >= 0)
{
write.format("%.2f%n", score);
}
else if(score <= -1)
{
break;
}
}
}
catch(InputMismatchException ex){
System.out.println("Invalid input, Student's scores must be a number");
scan.next();
}
}
write.close();
}
catch(FileNotFoundException e)
{
System.out.println(e.getMessage());
}
}