输入的第一行为n(n<40),表示有n个同学,接下来的n行每行有4个输入,分别为该学生的名字,语、数、外成绩,请按照排序规则对学生进行排序,规则如下: 1、总成绩高的排在前面 2、总成绩相同的情况下,语文成绩高的排在前面。 3、在总成绩,语文成绩都相同的情况下,数学成绩高的排在前面。 4、在成绩都相同的情况下,先输入的同学排在前面。
输入: 3 aa 30 50 10 bb 10 40 50 cc 20 50 30 输出: cc 20 50 30 bb 10 40 50 aa 30 50 10
public static void main(String[] args) { Scanner scanner = new Scanner(System.in); // 学生数量 int num = scanner.nextInt(); Student[] students = new Student[num]; for (int i = 0; i < num; i++) { // 学生名字 String name = scanner.next(); // 语文 int verbal = scanner.nextInt(); // 数学 int math = scanner.nextInt(); // 外语 int foreign = scanner.nextInt(); // 总分 int total = verbal + math + foreign; students[i] = new Student(name, verbal, math, foreign, total); } Arrays.sort(students); for (Student student : students) { System.out.println(student); } } static class Student implements Comparable<Student> { String name; Integer verbal; Integer math; Integer foreign; Integer total; public Student(String name, Integer verbal, Integer math, Integer foreign, Integer total) { this.name = name; this.verbal = verbal; this.math = math; this.foreign = foreign; this.total = total; } @Override public int compareTo(Student student) { if (!this.total.equals(student.total)) { return student.total - this.total; } if (!this.verbal.equals(student.verbal)) { return student.verbal - this.verbal; } if (!this.math.equals(student.math)) { return student.math - this.math; } if (!this.foreign.equals(student.foreign)) { return student.foreign - this.foreign; } return 0; } @Override public String toString() { return "Student{" + "name='" + name + '\'' + ", verbal=" + verbal + ", math=" + math + ", foreign=" + foreign + ", total=" + total + '}'; } }