在我的Java程序中,我在HashMap中获得NullPointerException,即使在初始化并将值放入HashMap之后也是如此

在我的Java程序中,我在HashMap中获得NullPointerException,即使在初始化并将值放入HashMap之后也是如此,java,hashmap,biginteger,short,linkedhashmap,Java,Hashmap,Biginteger,Short,Linkedhashmap,在我的Java程序中,我在HashMap中获得NullPointerException,即使在初始化并将值放入HashMap之后也是如此 LinkedHashMap<Short,BigInteger> ft = new LinkedHashMap<Short,BigInteger>(5); ft.put( (short) 1, BigInteger.valueOf(A)); ft.put( (short) 2, BigInteger.valueO

在我的Java程序中,我在HashMap中获得NullPointerException,即使在初始化并将值放入HashMap之后也是如此

    LinkedHashMap<Short,BigInteger> ft = new LinkedHashMap<Short,BigInteger>(5);

    ft.put( (short) 1, BigInteger.valueOf(A));
    ft.put( (short) 2, BigInteger.valueOf(B));
    System.out.println(ft.isEmpty());
    System.out.println(ft.get((short)1));
    System.out.println(ft.get((short)2));
    System.out.println(ft.containsKey(1));
    System.out.println(ft.containsValue(1));
LinkedHashMap ft=newlinkedhashmap(5);
ft.put((短)1,BigInteger.valueOf(A));
ft.put((短)2,biginger.valueOf(B));
System.out.println(ft.isEmpty());
系统输出println(ft.get((short)1));
系统输出println(ft.get((short)2));
系统输出打印(ft.containsKey(1));
系统输出println(ft.containsValue(1));

如果
A
B
类型为
Long
(或
Short
Integer
)且包含
null
,则说明异常(因为
biginger.valueOf()
需要一个
long
,如果您向它传递某个引用数字类型,它会将其解封为一个基元类型,如果
long
/
整数
/
Short
null
),这将导致
NullPointerException

我尝试用非空值替换A和B,并测试了您的代码,没有出现异常,所以这一定是它

您可以将代码缩减为:

BigInteger.valueOf(A);
BigInteger.valueOf(B);

而且仍然会得到异常。

只要A和B不为空,我就可以使用它。如果它们为null,您将得到一个Nullpointerexception,因为您无法从null中获取BigInteger值。

查看代码,如果您的a或B变量可能是一个长类型,则可能为null

长A=10;
长B=空;
LinkedHashMap ft=新LinkedHashMap(5);
ft.put((短)1,BigInteger.valueOf(A));
ft.put((短)2,biginger.valueOf(B));
以上将给出错误

然后,BigInteger.valueOf(…)将成为空指针异常的原因

问候
Norman

A和B是在哪里创建的?您能显示结果错误吗?它在哪里失败?哪一行导致NullPointerException?当我用值替换A和B时,代码运行良好。我认为这是一个问题。在创建A和B的地方张贴代码…A和B的类型为Short@007alibabas如果其中任何一个包含null,同样的解释仍然适用。这不是一个真正的答案。为什么他们会得到NullPointerException?
long A = 10;
Long B = null;

  LinkedHashMap<Short,BigInteger> ft = new LinkedHashMap<Short,BigInteger>(5);

    ft.put( (short) 1, BigInteger.valueOf(A));
    ft.put( (short) 2, BigInteger.valueOf(B));