所以我有一个Room对象数组,其静态原因是因为我在main中这样做。
private static Room[] rooms = new Room[6];
所以在我的房间类中,我有一个名为setStatus的方法,它将字符串设置为房间对象
public String setStatus(String answer) {
if (answer.equalsIgnoreCase("Available") || answer.equalsIgnoreCase("Occupied")
|| answer.equalsIgnoreCase("Needs cleaning (unavailable)")
|| answer.equalsIgnoreCase("For walk-ins")
|| answer.equalsIgnoreCase("For emergencies")) {
this.status = answer;
return status;
} else {
System.out.println("Status must be set to Available, Occupied or Needs cleaning (unavailable)");
return null;
}
}//end of setStatus
现在我想设置数组中每个位置的状态
rooms[random.nextInt(6)].setStatus("For walk-ins");
但是当我设置数组的状态时,我得到一个nullpointer异常,任何想法?
答案 0 :(得分:0)
[
rooms
]静态的原因是因为我在主要的地方做这件事。
这不是您唯一的选择 - 您可以在main
方法中将其声明为局部变量。
但是我得到一个空指针异常
这是因为您已初始化数组对象,但您忘记初始化其各个元素。您需要添加一个循环,并单独创建每个房间。
如果保持rooms
静态,请添加一个静态初始化块,如下所示:
static {
for (int i = 0 ; i != rooms.length ; i++) {
rooms[i] = new Room(); // You may need to pass other parameters to the constructor
}
}
如果您希望将rooms
更改为局部变量,可以在for
数组的声明/初始化之后立即将main
循环放在rooms
中对象