0

ランダムな間隔でオブジェクトを 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 のランダムな間隔で追加されるため、そうではありません。何か案は?

4

1 に答える 1

0

「時計の時刻」を の値として定義していますiか? もしそうなら、なぜあなたがそれを期待し、違うと思うのか私にはわかりませんtotalCustomers.

for ループでは、ウィンドウが空かどうかに関係なく、顧客を追加します。常に少なくとも 1ずつインクリメントするサービスを常に開始しているため、初回以降はウィンドウが空になることはありません。serviceTime

したがって、ループの最初の繰り返しの後、あなたの else ブランチifは排他的に実行され、totalCustomers常に の横にインクリメントされますi

コードにはより大きなロジックギャップがあると思いますが、質問を組み立てたり、コードを表示したりする方法が明確ではありませんでした。serviceTimeがどのように宣言されているのか、またはコードが何をしているのかは不明です。キューからアイテムを取り出すことは決してないようです。これ以上のヘルプが必要な場合は、質問にさらに力を入れる必要があります。

于 2011-07-10T05:01:07.337 に答える