Java String Сканер не ожидает информацию, сразу переходит к следующему оператору. Как ждать информацию? [Дубликат]

На этот вопрос уже есть ответ:

Scanner пропускает nextLine () после использования next () или nextFoo ()? 15 ответов

Я пишу простую программу, которая предлагает пользователю ввести количество учеников, а затем просит пользователя ввести имя и балл каждого ученика, чтобы определить, какой ученик имеет наивысший балл.

Я написал программный код, и он компилируется. Первая строка запрашивает количество студентов и ждет ввода. Предполагается, что вторая строка запрашивает имя студента и ожидает ввода, затем третья строка должна выводить и запрашивать счет этого студента и ждать ввода, но после того, как напечатана вторая строка, сразу вызывается третья строка (2-я строка не жду ввода) и тогда я получаю ошибку времени выполнения при попытке ввести запрошенную информацию после третьей строки.

Как настроить код так, чтобы вторая строка печатала и ждала ввода строки, прежде чем печатать третью строку?

import java.util.Scanner;

public class HighestScore {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);

        System.out.print("Enter the number of students: ");
        int numOfStudents = input.nextInt();

        System.out.print("Enter a student's name: ");
        String student1 = input.nextLine();

        System.out.print("Enter that student's score: ");
        int score1 = input.nextInt();

        for (int i = 0; i <= numOfStudents - 1; i++) {

            System.out.println("Enter a student's name: ");
            String student = input.nextLine();

            System.out.println("Enter that student's score: ");
            int score = input.nextInt();

            if (score > score1) {
            student1 = student;
            score1 = score;
            }
        }
        System.out.println("Top student " +
        student1 + "'s score is " + score1);
    }
}

Ответы на вопрос(3)

Ваш ответ на вопрос