上下文:
所以基本上我有一个Map
类,其中包含一个名称,另一个类称为Room
。 Room
包含一个其门数的整数,以及一个名为Door
的类。 Door
包含一个表示门位置的字符,可以是N(正交),E(ast),S(outh),W(est)。
问题:
这是我设置Room
类的方式:
public class Room {
int doors;
Door door;
public Room(int doors, Door door) {
this.doors = doors;
this.door = door;
}
}
但是这种方式我只能给它分配1个门,而且我需要能够分配与int门的值相等的门数量。有任何想法吗?
答案 0 :(得分:3)
简单地说,您必须使用可以包含多个门的数组或列表
public class Room {
Door doors[];
}
或者,如果您不确定创建房间对象时的门数,因为数组的大小是固定的,则可以创建一个数组列表。
public class Room {
List<Door> doors = new ArrayList<Door>();
}
如果使用数组,则可以使用构造函数初始化门对象
public Room(int num) {
this.doors = new Door[num];
Arrays.fill(this.doors,new Door());
}
答案 1 :(得分:1)
您可以使用List
将Door
存储在Room
类中,并添加多个构造函数以支持创建具有Room
数组的Door
或List
中的Door
个。另外,您还可以定义实例化之后将Door
添加到Room
的方法。
public class Room {
private final List<Door> doors = new ArrayList<>();
public Room(Door... doors) {
this.doors.addAll(Arrays.asList(doors));
}
public Room(List<Door> doors) {
this.doors.addAll(doors);
}
public void addDoor(Door door) {
this.doors.add(door);
}
public List<Door> getDoors() {
return doors;
}
}
如果您对
Door
课程的一些建议感兴趣,请 阅读以下内容。
由于方向可以是N
,E
,S
或W
,因此最好使用enum
而不是一般的{{1 }}值,将方向值仅限制为这4个值。
答案 2 :(得分:0)
使用一系列门。您不需要门的数量,因为它等于数组的长度
答案 3 :(得分:0)
例如,您可以使用HttpResponse {headers: HttpHeaders, status: 200, statusText: "OK",
url: "**********", ok: true, …}
body: {id: 1, email: "*********", created_at: "2019-09-
21T11:02:31.833Z", updated_at: "2019-09-21T11:02:31.833Z"}
headers: HttpHeaders
lazyInit: () => {…}
lazyUpdate: null
normalizedNames: Map(0) {}
__proto__: Object
ok: true
status: 200
statusText: "OK"
type: 4
url: "********"
__proto__: HttpResponseBase
个数组:
$large_number= "'".(string)$data->orders_id;
这样,您甚至不需要存储门的数量,因为它只是Door
数组的public class Room {
Door[] doors;
public Room(int n) {
this.doors = new Door[n];
for (int i = 0; i < n; i++) {
this.doors[i] = new Door();
}
}
}
。