Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在使用java的电梯系统中需要帮助吗_Java - Fatal编程技术网

在使用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--;
    }
}