Didart

Student Academy

Nov 5th, 2021
144
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.68 KB | None | 0 0
  1. import java.util.*;
  2.  
  3. public class StudentAcademy {
  4.     public static void main(String[] args) {
  5.         Scanner scanner = new Scanner(System.in);
  6.  
  7.         int countStudents = Integer.parseInt(scanner.nextLine());
  8.  
  9.         Map<String, List<Double>> studentsGrades = new LinkedHashMap<>();
  10.  
  11.         for (int i = 0; i < countStudents; i++) {
  12.             String studentName = scanner.nextLine();
  13.             double grade = Double.parseDouble(scanner.nextLine());
  14.             if (!studentsGrades.containsKey(studentName)) {
  15.                 studentsGrades.put(studentName, new ArrayList<>());
  16.             }
  17.             studentsGrades.get(studentName).add(grade);
  18.         }
  19.         Map<String, Double> studentAverageGrade = new LinkedHashMap<>();
  20.  
  21.         for (Map.Entry<String, List<Double>> entry : studentsGrades.entrySet()) {
  22.  
  23.             String studentName = entry.getKey();
  24.             List<Double> grades = entry.getValue();
  25.             double averageGrade = getAverageGrade(grades);
  26.             if (averageGrade >= 4.50) {
  27.                 studentAverageGrade.put(studentName, averageGrade);
  28.             }
  29.         }
  30.         studentAverageGrade
  31.                 .entrySet()
  32.                 .stream()
  33.                 .sorted((entry1, entry2) -> entry2.getValue()
  34.                         .compareTo(entry1.getValue()))
  35.                 .forEach(entry -> System.out.printf
  36.                         ("%s -> %.2f%n", entry.getKey(), entry.getValue()));
  37.  
  38.     }
  39.  
  40.     private static double getAverageGrade(List<Double> grades) {
  41.         double sumGrades = 0;
  42.         for (double grade : grades) {
  43.             sumGrades += grade;
  44.         }
  45.         return sumGrades / grades.size();
  46.     }
  47. }
  48.  
Advertisement
Add Comment
Please, Sign In to add comment