我有一个包含双打数组的对象。
public class NumberRow {
static final int MAX_AMOUNT_OF_NUMBERS = 2500;
double[] NumberArray = new double[MAX_AMOUNT_OF_NUMBERS];
NumberRow(double[] NumberArray){
this.NumberArray = NumberArray;
}
}
在我的主程序中,我首先在构造函数中创建一个对象NumberRow的数组,如下所示
NumberRow[] numberRow;
稍后在程序中我把这段代码:
numberRow = new NumberRow[dataset.numberOfVariables];
之后我调用了一个为numberRow赋值的函数:
double misc = in.nextDouble();
numberRow[k].NumberArray[i] = misc;
我确实说过NumberRow指向的地方。但是,eclipse在这一行给了我一个空指针指针异常:
numberRow[k].NumberArray[i] = misc;
我希望有人能看到我做错了什么? 谢谢:))!
答案 0 :(得分:1)
执行此操作时:
numberRow = new NumberRow[dataset.numberOfVariables];
数组numberRow
的所有成员都已初始化为默认值NumberRow
。 NumberRow
是一个类,因此其默认值为null。要设置null值的值,必须先将其初始化为new
,真实对象,否则会出现NullPointerException。
答案 1 :(得分:1)
这是初学者开始使用对象数组时常见的错误。创建对象引用数组时,将初始化数组,但数组中的各个元素为null
。因此,在numberRow[k].NumberArray[i] = misc;
语句中,numberRow[k]
为null
,导致异常。因此,在该行之前,您需要将语句
numberRow[k] = new NumberRow();
在上述陈述之前。