Java中带有对象数组的Mutator方法
所以我有一个房间对象数组,它是静态的原因是因为我主要是这样做的Java中带有对象数组的Mutator方法,java,arrays,object,Java,Arrays,Object,所以我有一个房间对象数组,它是静态的原因是因为我主要是这样做的 private static Room[] rooms = new Room[6]; 因此,在我的room类中,我有一个名为setStatus的方法,它将字符串设置为room对象 public String setStatus(String answer) { if (answer.equalsIgnoreCase("Available") || answer.equalsIgnoreCase("Occupied")
private static Room[] rooms = new Room[6];
因此,在我的room类中,我有一个名为setStatus的方法,它将字符串设置为room对象
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");
然而,当我设置数组的状态时,我得到一个空指针异常,有什么想法吗
[房间]静止的原因是因为我主要是这样做的
private static Room[] rooms = new Room[6];
这不是您唯一的选择-您可以在main方法中将其声明为局部变量
但是,我得到一个空指针异常
这是因为您已经初始化了数组对象,但是忘记了初始化它的各个元素。您需要添加一个循环,并分别创建每个房间
如果使房间保持静态,请添加静态初始化块,如下所示:
static {
for (int i = 0 ; i != rooms.length ; i++) {
rooms[i] = new Room(); // You may need to pass other parameters to the constructor
}
}
如果您希望将房间更改为局部变量,可以在声明/初始化房间数组对象后立即将for循环放入main中。我想大约一小时前有人问了一个类似的问题:您确定数组房间中填充了房间对象吗?另外,如果我将null传递给你的setStatus方法呢?谢谢,我现在明白了。