• 20175221 曾祥杰 数据结构-排序(选做)


    任务详情

    • 在数据结构和算法中,排序是很重要的操作,要让一个类可以进行排序,有两种方法: - 有类的源代码,针对某一成员变量排序,让类实现Comparable接口,调用Collection.sort(List) - 没有类的源代码,或者多种排序,新建一个类,实现Comparator接口 调用Collection.sort(List, Compatator)
    • 针对下面的Student类,使用Comparator编程完成以下功能: 1. 在测试类StudentTest中新建学生列表,包括自己和学号前后各两名学生,共5名学生,给出运行结果(排序前,排序后) 2. 对这5名同学分别用学号和总成绩进行增序排序,提交两个Comparator的代码 3. 课下提交代码到码云
    class Student {
        private String id;//表示学号
        private String name;//表示姓名
        private int age;//表示年龄
        private double computer_score;//表示计算机课程的成绩
        private double english_score;//表示英语课的成绩
        private double maths_score;//表示数学课的成绩
        private double total_score;// 表示总成绩
        private double ave_score; //表示平均成绩
    
        public Student(String id, String name){
            this.id = id;
            this.name = name;
    }
        public Student(String id, String name, char sex, int age){
            this(id, name);
            this.sex = sex;
            this.age = age;
    }
        public String getId(){
            return id;
    }//获得当前对象的学号,
        public double getComputer_score(){
            return computer_score;
    }//获得当前对象的计算机课程成绩,
        public double getMaths_score(){
            return maths_score;
    }//获得当前对象的数学课程成绩,
        public double getEnglish_score(){
            return english_score;
    }//获得当前对象的英语课程成绩,
    
        public void setId(String id){
            this.id=id;
    }// 设置当前对象的id值,
        public void setComputer_score(double computer_score){
            this.computer_score=computer_score;
    }//设置当前对象的Computer_score值,
        public void setEnglish_score(double english_score){
            this.english_score=english_score;
    }//设置当前对象的English_score值,
        public void setMaths_score(double maths_score){
            this.maths_score=maths_score;
    }//设置当前对象的Maths_score值,
    
        public double getTotalScore(){
            return computer_score+maths_score+english_score;
    }// 计算Computer_score, Maths_score 和English_score 三门课的总成绩。
        public double getAveScore(){
            return getTotalScore()/3;
    }// 计算Computer_score, Maths_score 和English_score 三门课的平均成绩。
    
    }
    
    class Undergraduate extends Student{
        private String classID;
    
        public Undergraduate(String id, String name, char sex, int age,String classID){
            super(id,name,sex,age);
            this.classID=classID;
        }
        public String getClassID(){
            return classID;
        }
        public void setClassID(String classID){
            this.classID=classID;
        }
    }
    • 测试截图

    • 由于一开始做的时候,没有仔细审题,做成了 Comparable ,随后进行了修改。为了加以区分,Student2的是蓝墨云作业要求的 Comparator ,Student的是第一次做错的 Comparable ,两次的代码都已上传码云
    • Student2:

    • Student1

    • 一开始排序:
    • 排序后的排序
    • 码云链接

    问题与解决方案:

    问题1:Error:(17, 41) java: 不兼容的类型: int无法转换为java.lang.String

    问题1解决方案:

    是前边的产品代码和后边的测试代码,参数顺序不一致导致,修改使其顺序对应即可。

    参考资料:

    Comparable和Comparator的区别

    集合工具类 - CollectionUtil.java

    java提高篇之Iterator

    浅谈TreeMap以及在java中的使用

  • 相关阅读:
    Java 第十一届 蓝桥杯 省模拟赛 洁净数
    Java 第十一届 蓝桥杯 省模拟赛 第十层的二叉树
    Java 第十一届 蓝桥杯 省模拟赛 第十层的二叉树
    Java 第十一届 蓝桥杯 省模拟赛 第十层的二叉树
    Java 第十一届 蓝桥杯 省模拟赛 70044与113148的最大公约数
    Java 第十一届 蓝桥杯 省模拟赛 70044与113148的最大公约数
    20. Valid Parentheses
    290. Word Pattern
    205. Isomorphic Strings
    71. Simplify Path
  • 原文地址:https://www.cnblogs.com/zxja/p/10810017.html
Copyright © 2020-2023  润新知