moeC 2017-01-13 07:41 采纳率: 100%
浏览 2801
已采纳

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条回答

  • 迷茫猿小明 2017-01-13 07:51
    关注

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 C#调用python代码(python带有库)
  • ¥15 矩阵加法的规则是两个矩阵中对应位置的数的绝对值进行加和
  • ¥15 活动选择题。最多可以参加几个项目?
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)
  • ¥20 怎么在stm32门禁成品上增加查询记录功能
  • ¥15 Source insight编写代码后使用CCS5.2版本import之后,代码跳到注释行里面