Advertisement
desislava_topuzakova

Untitled

Nov 4th, 2022
424
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.43 KB | None | 0 0
  1. package maps;
  2.  
  3. import java.util.*;
  4.  
  5. public class StudentAcademy_06 {
  6. public static void main(String[] args) {
  7. Scanner scanner = new Scanner(System.in);
  8. //key: име на студент -> value: списък с оценките
  9. Map<String, List<Double>> studentsGrade = new LinkedHashMap<>();
  10.  
  11. int countStudents = Integer.parseInt(scanner.nextLine());
  12. for (int student = 1; student <= countStudents; student++) {
  13. String name = scanner.nextLine(); //име на студента
  14. double grade = Double.parseDouble(scanner.nextLine()); //оценка на студента
  15. //1. да не е записан
  16. if (!studentsGrade.containsKey(name)) {
  17. studentsGrade.put(name, new ArrayList<>());
  18. }
  19. //2. да е записан
  20. studentsGrade.get(name).add(grade);
  21. }
  22.  
  23. //записи: име на студента (key) -> ср. оценка (value)
  24. Map<String, Double> averageGradeStudents = new LinkedHashMap<>();
  25.  
  26. for (Map.Entry<String, List<Double>> entry : studentsGrade.entrySet()) {
  27. //entry: (key)име на студента -> (value)списък с оценки
  28. String studentName = entry.getKey(); //име на студент
  29. List<Double> listGrades = entry.getValue(); //списък с оценки за всеки студент
  30. double averageGrade = getAverageGrade(listGrades); //средна оценка
  31. //студент -> списък с оценките -> ср. аритметична оценка
  32. if (averageGrade >= 4.50) {
  33. averageGradeStudents.put(studentName, averageGrade);
  34. }
  35. }
  36.  
  37. //отпечатваме: averageGradeStudents
  38. //entry: name(key) -> av.grade (value)
  39. averageGradeStudents.entrySet().forEach(entry -> System.out.printf("%s -> %.2f%n", entry.getKey(), entry.getValue()));
  40. }
  41.  
  42. private static double getAverageGrade(List<Double> listGrades) {
  43. //{4.60, 3.50, 5.90, 4.70, 2.50}
  44. //ср. аритметично = сбора от оценките / брой на оценките
  45. double sumGrades = 0; //сбора от оценките
  46. for (double grade : listGrades) {
  47. sumGrades += grade;
  48. }
  49. return sumGrades / listGrades.size();
  50. }
  51. }
  52.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement