На этот вопрос уже есть ответ здесь:
Я пишу простую программу, которая запрашивает пользователь вводит количество студентов, затем просит пользователя ввести имя и количество баллов каждого студента, чтобы определить, какой студент набрал наибольшее количество баллов.
Я написал программный код, и он компилируется. Первая строка запрашивает количество студентов и ожидает ввода. Вторая строка должна запрашивать имя студента и ждать ввода, затем третья строка должна печатать и запрашивать оценку этого студента и ждать ввода, но после печати второй строки немедленно вызывается третья строка (вторая строка делает не ждать ввода), а затем я получаю сообщение об ошибке выполнения при попытке ввести запрошенную информацию после третьей строки.
Как настроить код таким образом, чтобы вторая строка печаталась и ожидала ввода строки перед печатью третьей строки?
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);
}
}
System.out.print("Enter the number of students: ");
int numOfStudents = input.nextInt();
// Eat the new line
input.nextLine();
System.out.print("Enter a student's name: ");
String student1 = input.nextLine();