我不明白這段代碼。我的一位朋友認爲我使用布爾值來使其工作。我不明白他何時解釋它。爲什麼循環中的found
?FOR循環中的布爾值
int id = input.nextInt();
boolean found = false;
for (int i = 0; i < z && !found; i++){
if (arr[i].getId() == id){
found = true;
index = i;
}
}
我不明白這段代碼。我的一位朋友認爲我使用布爾值來使其工作。我不明白他何時解釋它。爲什麼循環中的found
?FOR循環中的布爾值
int id = input.nextInt();
boolean found = false;
for (int i = 0; i < z && !found; i++){
if (arr[i].getId() == id){
found = true;
index = i;
}
}
for循環的i<z && !found
部分是條件,爲了循環繼續,條件必須爲真。添加!found
部件意味着當found
爲true或i>=z
(無論哪個先發生)時,循環都會終止。沒有這種條件,即使在第一次迭代中找到匹配(即arr[i].getId()==id
),循環總是會運行z
次。因此,這種情況是一種優化,可以縮短循環的運行時間。
到!found
條件的替代方案是用break
關鍵字來終止循環:
for(int i=0; i<z; i++){
if(arr[i].getId()==id){
found = true;
index = i;
break;
}
}
這裏的「布爾」是用盡可能快的陣列中發現的輸入的「ID」終止循環。好的是編譯器不必搜索,直到找到最後一個索引爲止的「id」。
裏面的for循環的條件語句讀取
i < z && !found
當「發現」是真實的,for循環將停止循環。你可以閱讀更多有關循環here
For循環語法如下:
for (initialize ; condition ; increment) {}
也有可能取代你與while循環迴路。
int i = 0;
int found = false;
while(i < z && !found) {
if(arr[i].getId()==id){
found = true;
index = i;
}
}
在這兩種情況下,都可以使用「break」關鍵字來簡化條件。 break關鍵字導致循環立即退出。這可能是也可能不是這裏的適當解決方案,但它確實顯示了處理這些類型的循環的另一種方式。
for(int i=0; i<z; i++){
if(arr[i].getId()==id){
index = i;
break;
}
}
謝謝你這麼多埃蘭爵士!起初它真的讓人困惑。不知道for循環中找到的目的是什麼。你現在更清楚了。哈哈* weeeee *! – topacoBoy 2014-10-11 10:11:57