洛谷链接:https://www.luogu.com.cn/problem/P1093
第一次自己使用排序类,相当于c的结构体
import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;
class Main{
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n=in.nextInt();
//定义对象集一定要刚刚好和总数相同n
Student[] student=new Student[n];
for(int i=1;i<=n;i++) {
int yw=in.nextInt(); //语文
int sx=in.nextInt(); //数学
int yy=in.nextInt(); //英语
int sum=yw+sx+yy; //总成绩
student[i-1]=new Student(yw,sx,yy,i); //下标从0开始,不然会爆错
}
in.close(); //关闭输入流
Arrays.sort(student,new Compare()); //排序
//输出前5个符合要求的
for(int i=0;i<5;i++) {
System.out.println(student[i].id+" "+student[i].sum);
}
}
}
class Student{
int yw;
int sx;
int yy;
int id;
int sum;
//构造方法
Student(int yw,int sx,int yy,int id){
this.yw=yw;
this.sx=sx;
this.yy=yy;
this.id=id;
sum=yw+sx+yy;
}
}
//排序类
class Compare implements Comparator<Student>{
@Override
public int compare(Student s1, Student s2) {
if(s1.sum==s2.sum && s1.yw>s2.yw) {
return s2.yw-s1.yw; //按语文成绩降序
}else if(s1.sum==s2.sum && s1.yw==s2.yw && s1.id<s2.id) {
return s1.id-s2.id; //按id升序
}
return s2.sum-s1.sum; //按总分降序
}
}