输入的第一行为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 +
'}';
}
}