2 vvcgp vvcgp 于 2017.01.13 15:41 提问

HashMap输出空指针错误的问题
 import java.util.*;

public class Map集合 {
    public static void main(String[] args) {


        HashMap hm = new HashMap(); // 创建一个没有指定类型的Map集合
        Student s1 = new Student("广平", "男");
        Student s2 = new Student("庆阳", "男");
        // Student s3=new Student("心怡","女");
        hm.put("1", s1);
        hm.put("2", s2);
        hm.put("3", (new Student("心怡", "女")));
        hm.put("4", "年龄18");
        hm.put("5", 50);
        // 查找学生编号是001的学生
        // 因为hm.get("001")反回的是Object所以加上强转
        Student s = (Student) hm.get("001");
        System.out.println(s.toString());
        System.out.println("放入不同数据类型的hm集合的元素:" );
        System.out.println(hm);

    }
}

class Student {
    String name;
    String sex;

    public Student(String n, String s) {
        name = n;
        sex = s;
    }

    public String toString() {
        return ("姓名:" + name + " " + "性别:" + sex + " ");
    }

}

上述代码为什么会报空指针错误?但是我把几个put方法改成下述样子就可以:

        hm.put("001", s1);
        hm.put("002", s2);
        hm.put("003", (new Student("心怡", "女")));
        hm.put("004", "年龄18");
        hm.put("005", 50);

3个回答

bjjoy2009
bjjoy2009   2017.01.13 15:51
已采纳

Student s = (Student) hm.get("001");这句问题吧,put进去的没有key是"001"的内容,都是“1”“2”...

vvcgp
vvcgp 原来如此,我这眼真瞎T_T
11 个月之前 回复
oyh1203
oyh1203   2017.01.13 17:12

map里面的key值是不能变的,你怎么put,就必须怎么get

qq_17311469
qq_17311469   2017.01.13 18:08

因为你hm.put的key没有设置为001 是设置为1,所以你hm.get("001")找不到 ,然后就空指针了

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!