我正在 java 中运行以下代码并有一些问题。
我在测试类中调用以下行:
building.floor(3).waitForElevator();
我的 Building 类具有以下方法,该方法从给定楼层编号的数组(楼层)返回楼层对象。
ArrayList<Floor> floors = new ArrayList<Floor>();
public Floor floor(int floorNumber) {
return floors.get(floorNumber);
}
我的 Floor 类有 waitForElevator() 方法。在我的Floor 类中,我还有一个长度为7 的数组,名为passengerWaiting。每当调用 waitForElevator() 时,我想访问passengerWaiting 数组中正确的floorNumber 并更改其值。
我遇到的问题是当调用building.floor(3).waitForElevator()时,如何从Floor类访问索引(本例中为3)。
感谢您提前提供的所有帮助。
最佳答案
您可以将该值存储在类实例变量中,并使其可通过访问器访问。
public class Building{
private int floor = 0;
private ArrayList<Floor> floors = new ArrayList<Floor>();
public Buliding(){
Floor floor1 = new Floor(this);
this.floors.add(floor1);
}
public Floor floor(int floorNumber) {
this.floor = floorNumber;
return floors.get(floorNumber);
}
public int getFloor(){
return floor;
}
}
如果您为Floor
添加一个构造函数,该构造函数接受建筑物的实例并将其存储为实例变量,您可以随时访问楼层。
public class Floor{
private Building building;
public Floor(Building building){
this.building = building;
}
public void waitForElevator(){
int floor = this.building.getFloor();
}
}
另一种解决方案
只需将 int
作为参数传递给 waitForElevator
即可。
public class Floor{
public void waitForElevator(int floor){
System.out.println(floor);
}
}
//Usage
building.floor(3).waitForElevator(3);
注意此解决方案不太好,因为客户端可以调用 building.floor(3).waitForElevator(4);
关于java对象数组列表索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22468126/