重写了equal后name还是提示false 前一节的课程也是一样 怎么回事

来源:6-4 学生选课---判断 Map 中是否包含指定的 key 和 value

del孜然

2016-06-30 10:10

    public void testContainsKeyOrValue(){

        System.out.println("请输入要查询的学生ID:");
        Scanner console=new Scanner(System.in);
        String id=console.next();
        System.out.println("您输入的学生ID为:" + id + ",在学生表中是否存在:"
                + students.containsKey(id));
        if (students.containsKey(id)) {
            System.out.println("对应的学生为:" + students.get(id).name);
        }
        System.out.println("请输入要查询的学生姓名:");
        String name=console.next();
        System.out.println("您输入的学生ID为:" + name + ",在学生表中是否存在:"
                + students.containsKey(name));
        if (students.containsKey(new Student(null,name))) {
            System.out.println("对应的学生为:" + name);
        }
    }



请输入学生ID:
1
请输入学生姓名:
小黑
成功添加学生:小黑
请输入学生ID:
2
请输入学生姓名:
小红
成功添加学生:小红
请输入学生ID:
3
请输入学生姓名:
小号
成功添加学生:小号
总共有:3个学生!
学生:小号
学生:小红
学生:小黑
请输入要查询的学生ID:
2
您输入的学生ID为:2,在学生表中是否存在:true
对应的学生为:小红
请输入要查询的学生姓名:
小黑
您输入的学生ID为:小黑,在学生表中是否存在:false

写回答 关注

2回答

  • 远方的小草
    2016-06-30 14:41:04
    已采纳

     System.out.println("请输入要查询的学生姓名:");
            String name=console.next();
            System.out.println("您输入的学生ID为:" + name + ",在学生表中是否存在:"
                    + students.containsKey(name));   
            if (students.containsKey(new Student(null,name))) {
                System.out.println("对应的学生为:" + name);
            }



    上面斜体加粗的地方错了

    应该是students.containsValue(new Student(null,name))

    del孜然

    非常感谢!

    2016-06-30 15:29:59

    共 1 条回复 >

  • del孜然
    2016-06-30 15:32:06

    好吧  我说为啥每回判定学生姓名都是false 原来是我复制的时候忘记修改了.....

Java入门第三季

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

409792 学习 · 4340 问题

查看课程

相似问题