因此,对于此作业,我必须模拟电梯。
现在,我生成了3个人,这些人在随机的地板上生成并且具有随机的目标地板。
我有1部电梯,将它们接起并带来。
我的问题是电梯一次只能处理1个人。
我不知道如何做到这一点,以使电梯停在路上的人的地板上。
例如:

第1个人的起始楼层为3,将要到达8
人2的起始楼层是9,将要到达10
人3的起始楼层为6,将要到达9

目前的工作方式是,电梯先升到3,再升到8,而没有人3停在6楼。我不确定如何解决此问题。

电梯在楼层之间移动的代码如下:

public void moveTo(int floor) throws InterruptedException
{
    int distance;

    synchronized(this)
    {
        distance = Math.abs(currentFloor - floor);
        System.out.println(name + " is on floor " + currentFloor + " moving to " + floor);
    }

    Thread.sleep(1000 * distance);

    synchronized(this)
    {
        currentFloor = floor;
    }
}


电梯的主要run()方法是:

public void run()
{
    try
    {
        for(;;)
        {
            ElevatorTask task;

            synchronized(this)
            {
                while(next_task == null)
                    wait();

                task = next_task;
                next_task = null;
                notify();
            }

            moveTo(task.getDestination());
        }
    }
    catch(InterruptedException ex){}
}


任何帮助都会很棒。
谢谢

最佳答案

只是想:

当您的电梯靠近地板时,检查那里是否有人。如果是,请打开门;如果否,请跳到下一层。

将所有人员都送到他们的楼层后,转到最接近有人叫电梯的楼层。

10-08 11:49