使用HashMap时报错空指针异常(NullPointerException)

发布时间 2023-05-27 10:14:06作者: 她强我扶墙
HashMap<String, Integer> hp = new HashMap<>();
        hp.put("I", 1);

        char[] c = s.toCharArray();

        for (char sc : c ) {
                result += hp.get(sc);
        }

在使用HashMap解决LeetCode罗马数字转整数时,尝试使用了以上代码解决,结果IDEA报错:Cannot invoke "java.lang.Integer.intValue()" because the return value of "java.util.HashMap.get(Object)" is null

在查看后发现,定义HashMap时使用的是<String, Integer>,而在之后的遍历中遍历的时char[ ],以此造成了报错。

需修改为?即可

HashMap<Character, Integer> hp = new HashMap<>();
        hp.put('I', 1);
char[] c = s.toCharArray();
for (char sc : c ) { result += hp.get(sc); }