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方法呢?谢谢,我现在明白了。