Как я понимаю ваш вопрос, у вас уже есть функция Classroom.getHighestGradeStudent()
, которая дает вам лучшего ученика этого класса. У вас также есть способ получить оценку данного студента, так как объект Student содержит .finalGrade
.
Вы хотите пройтись по всем классным комнатам в школе и найти ученика с самой высокой оценкой.
Итак, у вас есть цикл for, который перебирает классы. И за каждый класс вы получаете произвольную итоговую оценку ученика:
int highestGrade = school.get(i).listAllStudentsInClassroom().get(i).getFinalGrade();
^
Это, вероятно, не то, что вы хотите. Вместо этого вы хотите получить лучшую оценку ученика из этого класса. Для этого вы должны вместо этого использовать
int highestGrade = school.get(i).getHighestGradeStudent().getFinalGrade();
(Если мое предположение неверно и у вас нет функции getHighestGradeStudent()
данного класса, вам нужно будет зациклить результат listAllStudentsInClassroom()
(или сохранить этот отсортированный список))
Затем вы можете продолжить работу со своим кодом, обновив сохраненную информацию о лучшем ученике s
, если лучший ученик в текущем классе лучше, чем у вас ранее в s
.
Но убедитесь, что вы используете highestGrade
или highestValue
, а не оба. Поскольку ваш код стоит, я не вижу highestValue
, определенного где-либо.
Обратите внимание, что этот код можно сделать более эффективным, если вы будете искать лучшего ученика в данном классе один раз . Я бы сделал
Student bestOfClassroom = school.get(i).getHighestGradeStudent();
int highestGrade = bestOfClassroom.getFinalGrade();
так что у вас уже есть ученик для хранения в s
, просто сделав s = bestOfClassroom
вместо повторного поиска по всему списку.
Но это оптимизация, которая не должна относиться к Correctness вашей программы.