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

Java 如何调试与模拟客户线的队列有关的此错误?,java,Java,因此,我得到了一个客户列表和他们的到达时间,并将他们添加到队列中。我的程序是这样设置的,如果客户到达,他/她会被从队列中拉出来,放到第二个队列中,然后会发生其他一些事情 员工的服务时间固定为5分钟或300秒,商店在下午5点关门。因此,如果有人在4:56进门,而没有其他人在线,即使商店在5点关门,这个人也会得到服务并被解雇。其他可能在他之后到达的顾客即使在5点之前到达也不会得到服务 所以问题是,我的代码的重要部分只有在第一个队列不是空的情况下才会运行。但是从我给的客户列表中,一个人在下午4:56进

因此,我得到了一个客户列表和他们的到达时间,并将他们添加到队列中。我的程序是这样设置的,如果客户到达,他/她会被从队列中拉出来,放到第二个队列中,然后会发生其他一些事情

员工的服务时间固定为5分钟或300秒,商店在下午5点关门。因此,如果有人在4:56进门,而没有其他人在线,即使商店在5点关门,这个人也会得到服务并被解雇。其他可能在他之后到达的顾客即使在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
    }
}

因此,第一个if循环需要求值为true,如果我的代码中评估客户的部分和不能运行的部分可以运行,但是当最后一个家伙离开队列时,这部分就不再运行了。如何修复此问题?

从提供的代码片段很难判断,但听起来您需要一个布尔标志,如
servedLateCustomer
。起初这是错误的。一旦你在4:55之后为某人服务,你就将其设置为
true
。然后,将该标志用作条件的一部分(如果您已经为一位迟到的客户提供服务,则不要排队工作)


一个“对未来的思考”可以是将其设置为一个int计数器
lateCustomersServed
,这样您就可以设置条件,允许处理一个或多个迟到者,而不仅仅是“0或1”

我明白您的意思,但我不确定如何编写此项。你推荐什么?