对学生成绩进行排序。学生信息包括:姓名name,学号id,语文成绩,数学成绩,英语成绩。 排序方式: 首选总分从高到低排序; 若总分相同,按语文成绩从高到低排序; 若总分相同且语文成绩相同,按数学成绩从高到低排序; 若总分相同且语文、数学成绩相同,按英语成绩从高到低排序; 若总分相同,且各科成绩相同,按学号从小到大排序。
//创建比较器
public class MyComparator implements Comparator {
@Override
public int compare(Object o1, Object o2) {
// 强转
Student s1=(Student)o1;
Student s2=(Student)o2;
//比较总分
int num=new Integer(s2.getSum()).compareTo(new Integer(s1.getSum()));
if(num==0){
//如果总分相同,按照语文比较
int num1=s2.getChinese()-s1.getChinese();
if(num1==0){
//如果语文相同,按照数学比较
int num2=s2.getMath()-s1.getMath();
if(num2==0){
//如果数学相同,按照英语比较
int num3=s2.getEnglish()-s1.getEnglish();
if(num3==0){
//如果英语也相同,按照id比较
int num4=s2.getId().compareTo(s1.getId());
if(num4==0){
return 0;
}else if(num4<0){
return 1;
}
}else if(num3>0){
return 1;
}
}else if(num2>0){
return 1;
}
}else if(num1>0){
return 1;
}
}else if(num>0){
return 1;
}
return -1;
}
}
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632