В моем текущем коде указано, что последний учащийся, которому был присвоен их балл, имеет самый высокий балл, даже если он ниже, чем исходный.

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

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

package chapter5;
import java.util.Scanner;

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



    System.out.println("Enter number of students");
    int numberOfStudents = input.nextInt();

    System.out.println("Enter the name and score of each student:");
    for (int i = 0; i < numberOfStudents; i++ ){
        System.out.println("Student " + (i+1) + " name ");
        String name = input.next();

        System.out.println("Student " + (i+1) + " score ");
        int score = input.nextInt();



        int highestScore = 0;
        String highestScoreName ="";

        if (score > highestScore){
            highestScore = score;
            highestScoreName = name;

            System.out.println("The student with the highest score is " 
 + highestScoreName + " with a score of " + highestScore );

        }
    }


}   
    }

2 ответа

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

Попробуйте это вместо этого:

package chapter5;
import java.util.Scanner;

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

int highestScore = 0;
String highestScoreName ="";

System.out.println("Enter number of students");
int numberOfStudents = input.nextInt();

System.out.println("Enter the name and score of each student:");
for (int i = 0; i < numberOfStudents; i++ ){
    System.out.println("Student " + (i+1) + " name ");
    String name = input.next();

    System.out.println("Student " + (i+1) + " score ");
    int score = input.nextInt();

    if (score > highestScore){
        highestScore = score;
        highestScoreName = name;
        }
    }
        System.out.println("The student with the highest score is " 
 + highestScoreName + " with a score of " + highestScore );

    }
}

Объявите переменные самыми высокими оценками и наивысшим оценками перед циклом for, при этом переменные внутри цикла с каждой итерацией будут сбрасывать свое значение.

Другие вопросы по тегам