2011-07-10 64 views
0

嘗試以隨機間隔將對象添加到ArrayDeque。這是我java以隨機間隔將對象添加到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。有任何想法嗎?

回答

0

你是否將「時鐘時間」定義爲i的值?如果是這樣,我不知道爲什麼你會期望它和totalCustomers是不同的。

在for循環中,無論窗口是否爲空,都會添加一個客戶。第一次後,窗口永遠不會是空的,因爲你總是開始服務,其中總是遞增serviceTime至少1

因此,在循環的第一次迭代之後,if的else分支將獨佔執行,並且totalCustomers將始終與i一起增加。

我認爲你的代碼在邏輯上存在較大的空白,但是你對如何構建問題或顯示代碼沒有很清楚。目前還不清楚如何聲明serviceTime或代碼應該做什麼。您似乎從未將某件物品從隊列中取出。如果你需要更多的幫助,你需要在你的問題上付出更多的努力。

+0

居然弄明白了,別人有類似的問題,幫我解決了我的問題。一石二鳥http://stackoverflow.com/questions/6639243/java-add-items-to-arraylist-at-random-time-intervals/6643169#6643169 – fernan