Java 无法从Hashmap获取int

Java 无法从Hashmap获取int,java,hashmap,Java,Hashmap,所以我像这样检查int,每当我运行它时,当我试图检索int时,我会得到一个NullPointerException 编辑 publicstatichashmap playerBounty=newhashmap(); 我猜NPE是由这句话引发的: int-total=say+mapped 发生这种情况的原因是映射的为null。由于算术运算是为数字原语定义的,所以只有java编译器为您执行一个名为“自动装箱”的“魔术”。它实际上将您的线路转换为如下内容: inttotal=say+mapped.i

所以我像这样检查int,每当我运行它时,当我试图检索int时,我会得到一个NullPointerException

编辑

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>();