我被卡住了。我必須從多次調用的函數中返回一個值,但我無法做到這一點
以下函數應該返回一個整數currVm
。但是如果我輸入return
,我將打破循環,下次調用此函數時,將再次開始相同的過程。
我該做什麼,讓我從我離開的地方繼續?我試圖讓static
變量,但我沒有幫助我。
@Override
public int getNextAvailableVm() {
Set<String> dataCenters = confMap.keySet();
for (String dataCenter : dataCenters) {
LinkedList<DepConfAttr> list = confMap.get(dataCenter);
Collections.sort(list, new MemoryComparator());
int size = list.size() - 1;
int count = 0;
while(size >= 0) {
DepConfAttr dca = (DepConfAttr)list.get(count);
int currVm = dca.getVmCount();
int c = 0;
while(c <= currVm) {
allocatedVm(currVm);
c++;
return currVm;
}
count++;
size--;
}
}
return 0;
}
的for-each
循環分配一個新的data center
充當了confMap
.The名單,我得到一個價值的關鍵,是sorted.Then循環運行,直到它逃脫了size.Inside這個while loop
,另一個while loop
從調用繼承類的函數allocatedVm
的位置運行。將名爲currVm
的參數傳遞給它。
這是我需要返回的變量。我該怎麼做才能返回這個變量?我必須從我離開開始。我的意思是下一次調用應該是執行循環時的下一個步驟,不管它是什麼。
你想要的是'yield'。不幸的是,Java沒有「yield」。你必須切換到C#。 :-P –
@ ChrisJester-Young在Java中肯定會有出路 – saplingPro
我確定有,但它會很醜陋。 :-('yield'是一個非常乾淨和容易閱讀的特性,我真的希望Java有'yield'的特性。另請參見:http://stackoverflow.com/q/1980953/13 –