Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package main;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.Scanner;
- import java.util.stream.Collectors;
- public class Problem23 {
- public static void main(String[] args) {
- Scanner console = new Scanner(System.in);
- Integer count = Integer.parseInt(console.nextLine());
- List<Student> allStudents = new ArrayList<>();
- for (int i = 0; i < count; i++) {
- String[] tokens = console.nextLine().split("\\s+");
- String name = tokens[0];
- List<Double> grades = new ArrayList<>();
- for (int j = 1; j < tokens.length; j++) {
- grades.add(Double.parseDouble(tokens[j]));
- }
- allStudents.add(new Student(name, grades));
- }
- allStudents.sort((o1, o2) -> {
- if (o1.getName().compareTo(o2.getName())==0){
- return Double.compare(o2.getAverageGrade(), o1.getAverageGrade());
- }
- return o2.getName().compareTo(o1.getName());
- });
- for (Student student : allStudents.stream().filter(p->p.getAverageGrade()>=5.0).collect(Collectors.toSet())) {
- System.out.printf("%s -> %.2f\n",student.getName(),student.getAverageGrade());
- }
- }
- }
- class Student {
- private String name;
- private List<Double> grades;
- private double averageGrade;
- String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public List<Double> getGrades() {
- return grades;
- }
- public void setGrades(List<Double> grades) {
- this.grades = grades;
- }
- double getAverageGrade() {
- if (averageGrade == 0.0) {
- setAverageGrade();
- }
- return averageGrade;
- }
- private void setAverageGrade() {
- this.averageGrade = this.grades.stream().mapToDouble(Number::doubleValue).average().getAsDouble();
- }
- Student(String name, List<Double> grades) {
- this.name = name;
- this.grades = grades;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement