老师,我这个怎么提示Cannot resolve method 'compareTo' in 'BanJi'

老师,我这个怎么提示Cannot resolve method 'compareTo' in 'BanJi'

import java.util.*;
import java.util.stream.Stream;

public class School{
    Map<String,BanJi>schoolMap;

    public School(){
        schoolMap=new HashMap<String,BanJi>();
    }

    /**
     * 添加班级
     * @param banji
     */
    public void addBanji(BanJi banji){
       schoolMap.put(banji.getClassName(),banji);
    }

    /**
     * 删除班级
     * @param banji
     */
    public void deleteBanji(BanJi banji){
        schoolMap.remove(banji.getClassName());
    }

    /**
     * 通过班级名称查询班级
     * @param className
     * @return
     */
    public BanJi searchByName(String className) {
        BanJi bj=null;
        Set<String> setbanji=schoolMap.keySet();
        for(String se:setbanji){
            if(se.equals(className)){
                bj=schoolMap.get(se);
                break;
            }
        }
        return bj;
    }

    /**
     * 对各班语文成绩按平均分进行由大到小排序:
     */
    public void sortChineseByAverage() {
       List<Map.Entry<String,BanJi>> listmp=new ArrayList<>(schoolMap.entrySet());
       Collections.sort(listmp, new Comparator<Map.Entry<String, BanJi>>() {
           @Override
           public int compare(Map.Entry<String, BanJi> o1, Map.Entry<String, BanJi> o2) {
               return (o1.getValue()).compareTo(o2.getValue());
           }
       });



    }




    public Map<String, BanJi> getSchoolMap() {
        return schoolMap;
    }

    public void setSchoolMap(Map<String, BanJi> schoolMap) {
        this.schoolMap = schoolMap;
    }



}


正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,同学的报错提示是在班级类中,建议同学提供班级类的代码,这样老师才能准确的排查问题原因。

祝学习愉快~


  • 热爱编程学习 提问者 #1
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.List;
    
    public class BanJi {
        private String classId;
        private String className;
        private List<Student> studentslist;
    
    
        public BanJi(String classId,String className){
            this.setClassId(classId);
            this.setClassName(className);
            studentslist=new ArrayList<Student>();
        }
    
        /**
         * 将学生添加到班级
         * @param stu
         */
        public void addStudent(Student stu){
            boolean fals=false;
            for(Student st:studentslist){
                if(st.getStuNum()==stu.getStuNum()){
                    fals=true;
                    break;
                }
            }
            if(fals){
                System.out.println(stu.getStuName()+"学号重复");
            }else {
                studentslist.add(stu);
            }
    
        }
    
        /**
         *
         * @param stuNum
         * @return 通过学号查询学生在班级中是否存在
         */
        public Student searchStudentByNum(int stuNum){
            Student stuNum1=null;
            for (Student st:studentslist){
                if(st.getStuNum()==stuNum){
                    stuNum1=st;
                    break;
                }
            }
            return stuNum1;
        }
    
        /**
         * 输入班级学生的语文成绩
         * @param stuNum
         * @param score
         */
        public void insertChineseScore(int stuNum,float score){
            Student st=searchStudentByNum(stuNum);
            for (Student s:studentslist){
                if(s.getStuNum()==stuNum){
                    s.setChinese(score);
                    System.out.println(s);
                    break;
                }
            }
    
        }
    
        /**
         * 输入班级学生的数学成绩:
         * @param stuNum
         * @param score
         */
        public void insertMathScore(int stuNum,float score){
            for(Student st:studentslist){
                if(st.getStuNum()==stuNum){
                    st.setMath(score);
                    System.out.println("成绩: "+"学号="+st.getStuNum()+"数学成绩"+st.getMath());
                    break;
                }
            }
        }
    
        /**
         * 删除学生信息
         * @param stuNum
         */
        public void deleteStudent(int stuNum){
           Student st=searchStudentByNum(stuNum);
           studentslist.remove(st);
           System.out.println("学号"+stuNum+"删除成功");
        }
    
        /**
         * 显示所有学生的信息(包括学号和姓名)
         */
        public void displayAllStudent(){
            for (Student list:studentslist){
                System.out.println(list);
            }
        }
    
        //获取语文成绩平均分
        public float yuwen(){
            float ft=0.0f;
            for(Student stu:studentslist){
                ft=ft+stu.getChinese();
                break;
            }
            return ft/studentslist.size();
        }
    
        //获取语文成绩平均分
        public float shuxue(){
            float ft=0.0f;
            for (Student stu:studentslist){
                ft=ft+stu.getMath();
            }
            return ft/studentslist.size();
        }
    
        public String getClassId() {
            return classId;
        }
    
        public void setClassId(String classId) {
            this.classId = classId;
        }
    
        public String getClassName() {
            return className;
        }
    
        public void setClassName(String className) {
            this.className = className;
        }
    
        public List<Student> getStudentslist() {
            return studentslist;
        }
    
        public void setStudentslist(List<Student> studentslist) {
            this.studentslist = studentslist;
        }
    
        @Override
        public String toString() {
            return "班级{" +
                    "班级Id='" + classId + '\'' +
                    ", 班级名称='" + className + '\'' +
                    ", 班级列表=" + studentslist +
                    '}';
        }
    
    
    
    }
    
    
    import java.util.Objects;
    
    public class Student {
        private int stuNum;
        private String stuName;
        private float math;
        private float chinese;
    
    
        public Student(){}
        /**
         *
         * @param stuNum 学号
         * @param stuName 学生姓名
         * @param math 数学成绩
         * @param chinese 语文成绩
         */
        public Student(int stuNum,String stuName,float math,float chinese){
            this.setStuNum(stuNum);
            this.setStuName(stuName);
            this.setMath(math);
            this.setChinese(chinese);
        }
    
        public int getStuNum() {
            return stuNum;
        }
    
        public void setStuNum(int stuNum) {
            this.stuNum = stuNum;
        }
    
        public String getStuName() {
            return stuName;
        }
    
        public void setStuName(String stuName) {
            this.stuName = stuName;
        }
    
        public float getMath() {
            return math;
        }
    
        public void setMath(float math) {
            this.math = math;
        }
    
        public float getChinese() {
            return chinese;
        }
    
        public void setChinese(float chinese) {
            this.chinese = chinese;
        }
    
        @Override
        public String toString() {
            return "学生信息{" +
                    "学号" + stuNum +
                    ",姓名='" + stuName + '\'' +
                    ", 数学成绩=" + math +
                    ", 语文成绩=" + chinese +
                    '}';
        }
    
        @Override
        public boolean equals(Object obj) {
            if (this == obj) return true;
            if (obj == null || getClass() != obj.getClass()) return false;
            Student student = (Student) obj;
            return stuNum == student.stuNum && Float.compare(student.math, math) == 0 && Float.compare(student.chinese, chinese) == 0 && stuName.equals(student.stuName);
        }
    
        @Override
        public int hashCode() {
            return Objects.hash(stuNum, stuName, math, chinese);
        }
    }


    2022-04-10 16:18:37
  •     同学你好,这个错误是因为在sortChineseByAverage方法中,语句return (o1.getValue()).compareTo(o2.getValue());中,o1.getValue()获取的是BanJi对象,而BanJi类中没有定义过compareTo方法导致的。

        报错信息Cannot resolve method 'compareTo' in 'BanJi'也指明了,无法解析'BanJi'类中的方法'compareTo'。

        建议同学在BanJi类中实现Comparable接口并重写compareTo方法,可以解决报错问题。

        祝学习愉快~


    2022-04-10 16:53:07
  • 这个方法怎么重写呢?

    2022-04-10 18:43:04
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师