情况(java中的新功能):
我想将随机值存储到我创建的类的对象数组中。 我创建了以下课程:
private double color;
private double size;
// default constructor
public Example() {
color = 0.0;
size = 0.0;
}
// second constructor taking two arguments
public Example(double color, size imaginary){
this.color=color;
this.size=size;
}
// mutators
public void setColor(double c){
color=c;
}
public void setSize(double s){
size=s;
}
现在在我的驱动程序类中:
我创建了以下
import java.lang.Math;
int num = 4;
Example[] array;
array = new Example[num];
for(int i=0;i<num-2;i++)
{
randomColor = Math.random();
randomSize = Math.random();
array[i].setColor(randomColor);
array[i].setSize(randomSie);
}
当我运行程序时,出现以下错误消息:
线程“ main”中的异常java.lang.NullPointerException
Im假定数组每个元素中的内容为null。但是为什么呢?以及如何使以上逻辑起作用?
很明显,我想限制在我的知识范围之内,这是围绕此代码的复杂性。 谢谢
答案 0 :(得分:1)
您仅创建了Example
个对象的数组,但是由于您尚未创建任何null
个对象实例,因此其中的每个元素都是Example
。
“引用类型”的数组(基本上是class
,interface
,enum
或数组的数组)首先在每个元素中都有null
引用,并且您仍然需要创建要放入数组的对象。
将代码更改为:
array[i] = new Example(randomColor, randomSize);
这将创建新的Example
对象,并将随机值分配给其属性。