我的任務是創建銀行模擬。到目前爲止,我所取得的進展是生成隨機的Client對象,使Teller的4個對象,將Client對象放入一個循環隊列中,並將一個客戶端放入一個空的Teller(如果有的話)。即使條件仍然成立,雖然循環不會繼續
我現在的問題是我所做的while循環不會繼續,即使設置條件仍然爲true,它只能執行5次。該程序仍然運行。
這是我迄今(假設所有的變量聲明)代碼:
public void run() {
int counter = 1;
populateTellers(windowArray);
while (counter < 10) {
newClient = generateClient();
System.out.println(newClient.toString() + " arrived at :" + counter);
System.out.println();
clientQueue.enqueue(newClient);
clientList.add(newClient);
System.out.println("The Queue now contains " + clientQueue.numberOfOccupiedCells() + " Client(s):");
for (int x = 0; x < clientList.size(); x++) {
System.out.println(clientList.get(x).toString());
}
System.out.println();
arrayIndex = getATeller(windowArray);
if (arrayIndex != -1) {
clientList.remove(0);
clientQueue.dequeue();
windowArray[arrayIndex].setClient(newClient);
windowArray[arrayIndex].setServiceTime(newClient.getDuration());
System.out.println(windowArray[arrayIndex].getName() + " now serves " + newClient.toString());
} else {
for (int x = 0; x < clientList.size(); x++) {
if (windowArrray[arrayIndex].getServiceTime() == counter) {
windowArray[arrayIndex].setClient(new Client());
System.out.println(windowArray[arrayIndex].getName() + " ends service for " + newClient.toString());
}
}
}
counter++;
}
}
的一兩件事,我不能讓周圍的頭,當我從aI = getATeller(wA);
刪除代碼「,直到程序將在其下面的if語句的結尾括號中起作用。我嘗試將塊放入方法中,改變if(){}和else {}中代碼的位置,並將條件更改爲if(aI==1)
,但我沒有得到任何改進。任何想法我做錯了什麼?
編輯:所以我已經能夠縮小到一行代碼是windowArray[arrayIndex].setServiceTime(newClient.getDuration());
,只要我給出納員的服務時間值問題會發生,我檢查了我的櫃員班,那裏沒有錯誤。任何想法如何我可以解決這個問題。
循環不會削減它。使用線程和並行。 –
你知道Java支持超過2個字符的變量名稱,對吧?所以你可以給他們有意義的名字,並讓你的代碼可以理解。我的建議是重構代碼,然後使用調試器來遍歷代碼並找出發生的情況。 –
這是線程的代碼嗎? –