给出 nn 个人的语文、数学、英语的成绩。你需要把他们的成绩降序输出。
排序的规则:先按总分排序,如果总分相等,就按语文成绩降序排序。如果语文成绩还相等。就按数学成绩降序排序,如果数学成绩还相等,就按姓名字典序升序排序。
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static class student implements Comparable{
int Chinese;
int Math;
int Eng;
int sum;
String name;
@Override
public int compareTo(Object o) {
// TODO Auto-generated method stub
student stu=(student)o;
int m=this.name.compareTo(stu.name);
if(this.sum>stu.sum) {
return 1;
}else if (this.sum==stu.sum&&this.Chinese>stu.Chinese) {
return 1;
}else if (this.sum==stu.sum&&this.Chinese==stu.Chinese&&this.Math>stu.Math) {
return 1;
}else if (this.sum==stu.sum&&this.Chinese==stu.Chinese&&this.Math==stu.Math&&m<0) {
return 1;
}
return -1;
}
@Override
public String toString() {
return name+" "+Chinese+" "+Math+" "+Eng+"\n";
}
}
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
int n=scanner.nextInt();
student[] stu=new student[n];
for (int i = 0; i < n; i++) {
student s=new student();
s.name=scanner.next();
s.Chinese=scanner.nextInt();
s.Math=scanner.nextInt();
s.Eng=scanner.nextInt();
s.sum=s.Chinese+s.Math+s.Eng;
stu[i]=s;
}
Arrays.sort(stu);
for (int i = n-1; i >=0; i--) {
System.out.print(stu[i].toString());
}
}
}