HW:Java程序生成NullPointerException错误消息

时间:2013-10-23 18:09:44

标签: java arrays nullpointerexception

我正在为我的Data Structures类编写代码。我的代码由5个类组成,这些类组合起来创建一个100个随机整数的数组,其值在0到100之间,从这些数字中挑选出各种统计信息,并生成与正态分布相比的标准偏差。显然,我计算标准偏差的方法与给出空指针错误的东西有关:

Exception in thread "main" java.lang.NullPointerException 
at UnorderedArrayList.standardDeviation(UnorderedArrayList.java:113)
at ValueList.main(ValueList.java:53)

代码段是

IntElement shortList = (IntElement) (this.list[i]);
int num = shortList.getNum();
d = num - average;
var += Math.pow((double) d,(double) 2);

错误ID第113行:

int num = shortList.getNum();

getNum似乎在程序的其他地方工作正常。

我花了几个小时与私人导师一起工作,我已经向我的教授征求意见,但我无法确定这个错误的原因。有没有人有什么建议?

3 个答案:

答案 0 :(得分:4)

很明显,this.list[i]返回null,所以你应该检查这个索引下的元素是否真的设置了。如果您有类似

的内容
IntElement[] array = new IntElement[100];
array[0] = new IntElement();

然后除array[0]之外的其他元素将为null,因此您的索引可能过高。

答案 1 :(得分:2)

IntElement shortList = (IntElement) (this.list[i]);
int num = shortList.getNum();

此处shortList为空,表示i list位置的元素为空。

答案 2 :(得分:1)

我同意上面给出的答案,只是为了补充它,总是建议在这种情况下进行空检查。

IntElement shortList = (IntElement) (this.list[i]);
int num = 0; 
if (shortList !=null) {
    num = shortList.getNum();
} else {
    System.out.println("No items returned"); //or log it. 
}