繁体   English   中英

Java中带有对象数组的Mutator方法

[英]Mutator methods with an Array of Objects in Java

所以我有一个Room对象数组,其静态的原因是因为我在main中进行处理。

private static Room[] rooms = new Room[6];

所以在我的房间类中,我有一个名为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");

但是,当我设置数组的状态时,出现空指针异常,有什么想法吗?

[ 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更改为局部变量,则可以在声明/初始化rooms数组对象之后,将for循环放入main

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM