Java 无法从Hashmap获取int
所以我像这样检查int,每当我运行它时,当我试图检索int时,我会得到一个NullPointerException 编辑Java 无法从Hashmap获取int,java,hashmap,Java,Hashmap,所以我像这样检查int,每当我运行它时,当我试图检索int时,我会得到一个NullPointerException 编辑 publicstatichashmap playerBounty=newhashmap(); 我猜NPE是由这句话引发的: int-total=say+mapped 发生这种情况的原因是映射的为null。由于算术运算是为数字原语定义的,所以只有java编译器为您执行一个名为“自动装箱”的“魔术”。它实际上将您的线路转换为如下内容: inttotal=say+mapped.i
publicstatichashmap playerBounty=newhashmap();
我猜NPE是由这句话引发的:
int-total=say+mapped代码>
发生这种情况的原因是映射的为null
。由于算术运算是为数字原语定义的,所以只有java编译器为您执行一个名为“自动装箱”的“魔术”。它实际上将您的线路转换为如下内容:
inttotal=say+mapped.intValue()代码>
很明显,如果mapped
为null
,则mapped.intValue()
将提高NPE
现在的问题是“为什么值为null?”我认为答案是“因为您没有将NOTNULL值放入映射的相应单元格。”
现在,检查您的代码,找出您想在哪里初始化该值以及为什么它没有初始化。然后修复错误。祝你好运 似乎bounty
不包含在playerBounty
map中,它向mapped
变量返回null,从而导致行int total=say+mapped中出现null指针异常代码>PlayerCounty是一个空地图,或者没有任何与赏金对应的条目。如果不看相关的代码,就不可能知道到底发生了什么代码>?另外,请发布stacktraceSorry,让我编辑代码,以便展示如何定义地图。int
添加到null
=>NPE(如下所述)@Twipply,不会改变任何内容。如果不存在映射,NPE将被抛出,因为整数
将被解除绑定到调用.intValue()
的int。如果你从地图上得到null
,NPE就会被抛出。非常感谢你,在我读了几遍之后,它变得更有意义了。
int sayd = Integer.parseInt(args[1]);
int say = (int) Math.ceil(sayd);
Integer mapped = (Integer) GrandTheftCart.playerBounty.get(bounty);
int total = say + mapped;
public static HashMap<String, Integer> playerBounty = new HashMap<String, Integer>();