以下代碼編譯並執行我所需的操作。它遍歷基於int的多維數組(稱爲nums),並搜索值爲1
的所有事件。該程序的輸出如下所示。有三件事要注意:高效循環代碼?此外,關於「for each」循環的查詢
- 關於「outer for」循環語句,我使用Java的逗號運算符來聲明兩個附加變量。
- 另外關於這個「outer for」,我在「迭代部分」中使用了另一個逗號操作符來重置其中一個附加變量。
- 關於「inner for」,我在「迭代部分」中使用了另一個逗號運算符來增加這個附加變量。
int[][] nums = {{1,1,2},{3,4},{5},{6,7,8},{9,1,1}};
for (int i=0, elsSearched=0, foundCount=0; i < nums.length; i++, elsSearched=0) {
for (int j=0; j < nums[i].length; j++, elsSearched++) {
if (nums[i][j] == 1) {
foundCount++;
}
}
System.out.println("Searched " + elsSearched +
" elements, and found \'number one\' a total of " + foundCount + " times..");
}
程序輸出:
難道這代碼更effeciently /文筆優美?
我的另一個查詢是關於Java的「for each」循環。我嘗試用逗號操作符的「for each」循環重寫上面的代碼,但代碼不會編譯。我很快得出了一個明顯的結論,但是如果逗號操作符可以與它一起使用,那麼「for each」循環會更好嗎,還是會引入「干擾雜亂」?
我不認爲你可以更有效地做到這一點,因爲你必須看看每個元素至少一次,以告訴它是否是一個;) – Blub
另請參見[這個答案](http://stackoverflow.com/a/256861/202504)有關每個循環與循環的效率。 – jmiserez