因此,对于此作业,我必须模拟电梯。
现在,我生成了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){}
}
任何帮助都会很棒。
谢谢
最佳答案
只是想:
当您的电梯靠近地板时,检查那里是否有人。如果是,请打开门;如果否,请跳到下一层。
将所有人员都送到他们的楼层后,转到最接近有人叫电梯的楼层。