使用Java中的对象数组的Mutator方法

时间:2014-04-14 01:56:52

标签: java arrays object

所以我有一个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异常,任何想法?

1 个答案:

答案 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中对象