【问题标题】:java adding objects to ArrayDeque at random intervalsjava以随机间隔将对象添加到ArrayDeque
【发布时间】:2011-07-10 01:54:56
【问题描述】:

尝试以随机间隔将对象添加到 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 的随机间隔添加的。有任何想法吗?

【问题讨论】:

    标签: java loops deque


    【解决方案1】:

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

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

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

    我认为您的代码中存在较大的逻辑空白,但您对如何构建问题或显示代码的方式不是很清楚。目前还不清楚serviceTime 是如何声明的,或者代码应该做什么。你似乎从来没有从队列中取出一个项目。如果您需要比这更多的帮助,您需要在您的问题上付出更多的努力。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-20
    • 1970-01-01
    • 1970-01-01
    • 2016-05-03
    • 1970-01-01
    • 2014-03-27
    相关资源
    最近更新 更多