for 語句簡單方便,但即使是小小的書寫錯誤也可能導致意外的錯誤或問題。在本期特刊中,我們整理了 for 語句的常見錯誤模式清單。透過查看錯誤原因和輸出範例,即使是初學者也能快速了解問題所在。
i <= arr.length
進行越界陣列存取int[] arr = {1, 2, 3};
for (int i = 0; i <= arr.length; i++) { // <= が原因でエラー
System.out.println(arr[i]); // IndexOutOfBoundsException
}
範例輸出
1
2
3
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 3 out of bounds for length 3
解:使用< arr.length
循環到陣列的末端。
for (int i = 0; i < 3; ) { // 更新式なし
System.out.println(i);
}
輸出範例(摘錄)
0
0
0
...(延々と続く)
對策:檢查條件和更新的一致性。始終檢查增加或減少是否滿足終止條件。
for (int i = 0; i < 3; ) {
System.out.println(++i); // 加算後の値を出力
}
範例輸出
1
2
3
for (int i = 0; i < 3; ) {
System.out.println(i++); // 出力後に加算
}
範例輸出
0
1
2
觀點:
++i
表示“新增然後使用”
i++
表示“先用然後加”
對策:正確使用時,請注意增量時機。將其用作計數器時,這種差異非常重要。
int i = 0;
for (int i = 0; i < 5; i++) { // コンパイルエラー
System.out.println(i);
}
錯誤訊息範例
error: variable i is already defined in method main(String[])
對策:避免重複使用變數名。使用能夠明確表明其作用的名稱。
for (int i = 0; i < 5; i++) {
if (i == 2)
break; // 本当はスキップしたかったが終了してしまう
System.out.println(i);
}
範例輸出
0
1
解決方案:如果要跳過處理,請使用continue
;如果要完全退出,請使用break
。
for (int i = 10; i > 0; i++) { // 条件と更新の向きが逆
System.out.println(i); // 無限ループに近い動き
}
對策:確保起始值、結束條件、更新方向一致。
仔細檢查下標和條件表達式的邊界
忘記更新或誤導可能會導致無限循環
注意增量位置和範圍
根據您的意圖選擇適當的休息和繼續
養成預測執行結果的習慣可以有效防止錯誤
非常感謝您讀到這裡。
如果那些認為“編程很難…”的人開始認為“它可能很有趣……”,我會很高興。
我也期待您的下一篇文章。
💬歡迎評論和回饋!
“這一章很容易理解!”
“這個表情是不是有點不對啊?”
「接下來我希望你做XX!」等等。
請隨時在評論中告訴我們!
原文出處:https://qiita.com/hitomin_poke/items/69d71b208cc073e608bd