-
分析:
我们会发现要比较总成绩,语文成绩以及学号,三个指标用普通数组难以表示,所以可以采用类Grade来存储这三个指标,并且用TreeSet来来存储Grade,这样还可以根据逻辑让set自动排序
进步:
如果指标比较多,可以采用Grade类来表示,同时用TreeSet进行存储利用Treeset灵活使用排序规则,使用匿名内部类
import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;
import java.util.Set;
// 1:无需package
// 2: 类名必须Main, 不可修改
import java.util.TreeSet;
public class Main {
private static class Grade{
Integer num;
Integer chinese;
Integer grade;
public Grade(Integer num,Integer chinese,Integer grade){
this.num=num;
this.chinese=chinese;
this.grade=grade;
}
}
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int n=scan.nextInt();
Set set=new TreeSet(new Comparator() {
@Override
public int compare(Grade grade1,Grade grade2){
//利用compareTo进行比较
//正数为升序,负数为降序
int result1=-grade1.grade.compareTo(grade2.grade);
//如果result1=0表示这个比不出来,则换下一个指标
if(result1!=0){
return result1;
}
int result2=-grade1.chinese.compareTo(grade2.chinese);
if(result2!=0){
return result2;
}
return grade1.num.compareTo(grade2.num);
}
});
int chinese=0;
for (int i = 0; i < n; i++) {
int sum=0;
for(int j=0;j<3;j++){
sum+=scan.nextInt();
if(j==0){
chinese=sum;
}
}
set.add(new Grade(i+1,chinese,sum));
}
int count=0;
for (Grade grade : set) {
count++;
System.out.println(grade.num+" "+grade.grade);
if(count==5){
break;
}
}
}
}



