java以随机间隔向ArrayDeque添加对象

时间:2011-07-10 01:54:56

标签: java loops deque

尝试以随机间隔向ArrayDeque添加对象。这就是我所拥有的

    for (int i = 0; i <= 100; i ++) {           
        if (window.isEmpty()) {
            Customer customer = new Customer(r.nextInt(10)+1);
            q.add(customer);
            window.beginService();
        }
        else {
            Customer customer = new Customer(r.nextInt(10)+1);
            q.add(customer);
            window.beginService();
            totalCustomers++;
            totalServiceTime += window.serviceTime;
            totalWaitTime += customer.getArrivalTime();
        }
    }

正在使用的其他方法是

public boolean isEmpty() {
    if (serviceTime == 0) {
        return true;
    }
    else 
    return false;
}

public void beginService() {
    if (isEmpty()) {
        serviceTime = r.nextInt(10)+1;
    }
    else
        serviceTime += r.nextInt(10)+1;
}

public Customer(int arrivalTime) {
    this.arrivalTime = arrivalTime;
}

public int getArrivalTime() {
    return arrivalTime;
}

当我打印出我的客户计数时,它等于我的时钟时间,这不应该是客户以1-10的随机间隔添加。有任何想法吗?

1 个答案:

答案 0 :(得分:0)

您是否将“时钟时间”定义为i的值?如果是这样,我不确定为什么你会期望它和totalCustomers不同。

在for循环中,无论窗口是否为空,都可以添加客户。在第一次使用之后,窗口将永远不会为空,因为您总是开始服务始终serviceTime增加至少1

因此,在循环的第一次迭代之后,if的else分支将独占执行,totalCustomers将始终与i一起递增。

我认为您的代码中存在较大的逻辑缺口,但您对于如何构建问题或显示代码并不十分清楚。目前还不清楚如何声明serviceTime或者代码应该做什么。你似乎永远不会从队列中取出一个项目。如果你需要更多的帮助,你需要在你的问题上付出更多的努力。