在使用java的电梯系统中需要帮助吗
我有一个代码,一次只能满足一个请求。有人能帮忙吗在使用java的电梯系统中需要帮助吗,java,Java,我有一个代码,一次只能满足一个请求。有人能帮忙吗 public class Client { public static void main(String[] args) { ElevatorImpl elevator = ElevatorImpl.getInstance(); elevator.setCurrentFloor(0); // assumption that lift is in ground floor initially
public class Client {
public static void main(String[] args) {
ElevatorImpl elevator = ElevatorImpl.getInstance();
elevator.setCurrentFloor(0); // assumption that lift is in ground floor initially
ElevatorManager elevatorManager = new ElevatorManager(elevator);
elevatorManager.addPickUp(new RequestDTO(1,10,30)); // first user access the lift at ground floor and want to go to 10th floor
elevatorManager.addPickUp(new RequestDTO(5,0,50));
elevatorManager.addPickUp(new RequestDTO(2,4,400));
elevatorManager.addPickUp(new RequestDTO(4,3,60));
elevatorManager.execute();
}
假设我们有一个电梯类,我们可以存储当前楼层和电梯方向
class Elevator{
int currentFloor;
Direction direction;
enum Direction{
UP,DOWN;
}
}
现在,当电梯在每一层开始移动时,我们可以检查两件事
如果有人想在这层楼下来
2.有人在这层楼等着,想和电梯往同一个方向走吗
因此,如果上述条件得到满足,电梯将在每一层停止。
如果有人登上电梯,我们会将其添加到电梯停靠点列表中
如果有人离开,我们会从名单上删除该站
因此,我们可以在电梯管理器类中维护一个存储用户请求的列表
List<RequestDTO> requestList = new ArrayList<>();
你能不能说一点关于代码现在做什么,它应该做什么,以及这两者之间有什么差距你需要帮助弥合?当然,杰里米。。目前我的程序一次只处理一个请求。。。比如说,如果一个人从震源2进入,想去目的地10,它可以去,但对于第二个人,比如说,如果一个人从震源3进入,它不会停在那里,并下降到目的地10,然后只服务下一个请求。请让我知道,通过服务附近的用户请求来提高代码的效率。你可以将所有请求排队,然后说,现在我要上去了。有人要在这里下车吗?如果是这样,停下来让他们下车。有人想上车,想上路吗?太好了,停下来让他们穿上(如果有空间的话)。现在假设有人想继续前进,或者(也许)有人比我们高,想继续前进。如果没有,看看我们下面是否有人需要服务。当你让人们上车时,确保他们不再等待。肯定有可能提高效率,但我想,如果能做到这一点,然后再调整。我不知道如何实施……你能帮我吗。。
List<Integers> stops = new ArrayList<>();
while(true){
if(isDeboarding(currentFloor)){
//remove current floor from boarded user
}
if(pendingRequestInSameDirection(currentFloor)){
//remove current floor from request list
//add requested floor in stops list
}
if(elevator.Direction == Direction.UP){
currentFloor++;
}else{
currentFloor--;
}
}