所以我给了我的客户列表及其到达时间,然后将它们添加到队列中。我的程序设置了,以便如果客户到达,他/她将被排除在队列中,然后将其置于第二个队列,然后发生了许多其他事情。
员工服务时间是恒定的5分钟或300秒,商店在下午5点关闭。因此,如果有人在4:56进来,没有其他人在线,那么该人也会得到服务,即使商店关闭。它们是在5之前。
因此,问题是,我的代码的重要部分仅在第一个队列没有空时运行。但是从我给出的客户列表中,一个人在下午4:56出现,然后另外两个人在4:58和4:59进来,并在4:59时,第一个队列是空的,并且我的重要代码块不再运行。
只会离开我的代码的相关部分。
if (eventqueue.isEmpty() == false) {
if (eventqueue.peek().arrtimesecs == clock) {
if (customerqueue.isEmpty() == true)
eventqueue.peek().waitingtime = 0;
customerqueue.enqueue(eventqueue.dequeue());
// does stuff
}
}
因此,如果循环需要评估我要评估客户的部分以及无法运行的内容,则首先是正确的,但是当那个最后一个人被排除在队列中时,此部分不再运行。我该如何解决?
很难从提供的摘要中分辨出来,但听起来您需要像servedLateCustomer
这样的布尔标志。最初是错误的。在4:55之后为某人服务后,您将其设置为true
。然后,您将该标志用作病情的一部分(如果您已经为一个晚些时候服务的客户,请不要排队工作(。
一种"对未来的想法"可能使它成为int计数器lateCustomersServed
,因此您可以将有条件的条件允许允许处理一个或多个后期comer,而不仅仅是" 0或1"