0

我正在为我的数据结构类编写代码。我的代码由 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 似乎在程序的其他地方工作正常。

我花了几个小时与私人导师一起工作,并且向我的教授寻求建议,但我无法确定导致此错误的原因。有没有人有什么建议?

4

3 回答 3

4

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

IntElement[] array = new IntElement[100];
array[0] = new IntElement();

然后除此之外的其余元素array[0]将为空,因此您的索引可能太高了。

于 2013-10-23T18:10:47.820 回答
2
IntElement shortList = (IntElement) (this.list[i]);
int num = shortList.getNum();

这里你的shortList为空,这意味着存在于第ith 位置的元素list为空。

于 2013-10-23T18:14:04.913 回答
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. 
}
于 2013-10-23T18:44:38.593 回答