java练习题 对学生成绩进行排序

对学生成绩进行排序。学生信息包括:姓名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