我正在为我的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似乎在程序的其他地方工作正常。
我花了几个小时与私人导师一起工作,我已经向我的教授征求意见,但我无法确定这个错误的原因。有没有人有什么建议?
答案 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.
}