我是新使用的对象数组,但无法弄清楚我做错了什么,为什么我总是得到一个空指针异常。我正在尝试创建一个Theatre类,其中包含一组Spotlight对象,这些对象可以设置为打开或关闭。但是 - 每当我调用这个数组时,我都会得到一个空指针异常。对象数组空指针异常
package theatreLights;
public class TheatreSpotlightApp {
public static void main(String[] args) {
Theatre theTheatre = new Theatre(8);
System.out.println("element 5 " + theTheatre.arrayOfSpotlights[5].toString());
}
}
package theatreLights;
public class Theatre {
spotlight[] arrayOfSpotlights;
public Theatre(int N){
arrayOfSpotlights = new spotlight[N];
for (int i = 0; i < arrayOfSpotlights.length; i++) {
arrayOfSpotlights[i].turnOn();
}
}
}
package theatreLights;
public class spotlight {
int state;
public spotlight(){
state = 0;
}
public void turnOn(){
state = 1;
}
void turnOff(){
state = 0;
}
public String toString(){
String stringState = "";
if(state == 0){
stringState = "is off";
}
else if(state==1){
stringState = "is on";
}
return stringState;
}
}
我必须做一些基本错误的创建数组,但无法弄清楚。
数组使用空值进行初始化。您需要为数组的每个条目分配一个新的聚光灯,如下所示:array [2] = new spotlight()。注意:按照惯例的类名(不是语法)应该以大写字母开头。 –
使您的数组包是私有的是有点冒险的,即使数组是最终的,引用仍然可以改变。私人包装比公共包装更好,但你仍然需要特别注意,当你不期望它们时,事物并没有改变。 – Kurtymckurt
(我不得不提,忽略编码约定是一个非常糟糕的主意。) –