麻烦大家帮忙看看,thx!!!

来源:6-1 学生选课---判断 List 中课程是否存在

liusongsir

2015-03-08 14:28

//这是测试方法
public void testContains(){
        Course course = courseToSelect.get(0);
        System.out.println("取得备选课程:"+course.name);
        System.out.println("备选课程中是否包含本课程:"+course.name+", "+courseToSelect.contains(course));
        Course course2 = new Course(course.id,course.name);
        System.out.println("新建课程:"+course2.name);
        System.out.println("备选课程中是否包含本课程:"+course2.name+", "+courseToSelect.contains(course2));        
        System.out.println("请输入要查询的课程名称:");
        String name = sc.next();
        Course course3 = new Course();
        course3.name = name;
        System.out.println("备选课程中是否包含本课程:"+course3.name+", "+courseToSelect.contains(course3));     
    } 
    
//这是Course类里面重写的equals方法
@Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if(!(obj instanceof Course))
            return false;
        Course other = (Course) obj;
        if (this.id == null) {
            if (other.id != null)
                return false;
        } else if (!id.equals(other.id))
            return false;
        if (this.name == null) {
            if (other.name != null)
                return false;
        } else if (!this.name.equals(other.name))
            return false;
        return true;
    }

http://img.mukewang.com/54fbeb8c00010d0304800280.jpg

这里为什么会是false呢?

写回答 关注

1回答

  • liusongsir
    2015-03-08 14:48:43

    我的equals方法里多了对id的判断,而当用户只输入课程名称时,id是为null,然而根据课程名称从list中查找时id不为空,所以调用equals方法时返回的是false.··这样想是对的吧?

    lany44

    对,从30行那里return之后 后面的代码都不会执行了 这是系统帮你重写的Course类下的equals方法吧 选的时候 把id属性点掉就行了

    2015-07-16 16:09:02

    共 1 条回复 >

Java入门第三季

Java中你必须懂得常用技能,不容错过的精彩,快来加入吧

409792 学习 · 4340 问题

查看课程

相似问题