如何调试此错误与模拟客户线的队列有关



所以我给了我的客户列表及其到达时间,然后将它们添加到队列中。我的程序设置了,以便如果客户到达,他/她将被排除在队列中,然后将其置于第二个队列,然后发生了许多其他事情。

员工服务时间是恒定的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"

最新更新