站長阿川

站長阿川私房教材:
學 JavaScript 前端,帶作品集去面試!

站長精心設計,帶你實作 63 個小專案,得到作品集!

立即開始免費試讀!

介紹

for 語句簡單方便,但即使是小小的書寫錯誤也可能導致意外的錯誤或問題。在本期特刊中,我們整理了 for 語句的常見錯誤模式清單。透過查看錯誤原因和輸出範例,即使是初學者也能快速了解問題所在。


  1. 下標錯誤

範例:使用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循環到陣列的末端。


  1. 無限循環

例如:忘記更新或缺少條件

for (int i = 0; i < 3; ) { // 更新式なし
    System.out.println(i);
}

輸出範例(摘錄)

0
0
0
...(延々と続く)

對策:檢查條件和更新的一致性。始終檢查增加或減少是否滿足終止條件。


  1. ++i 與 i++ 的混淆

範例:輸出與預期值不同的值

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++表示“先用然後加”

對策:正確使用時,請注意增量時機。將其用作計數器時,這種差異非常重要。


  1. 範圍衝突

範例:在 for 語句內部和外部使用相同的變數

int i = 0;
for (int i = 0; i < 5; i++) { // コンパイルエラー
    System.out.println(i);
}

錯誤訊息範例

error: variable i is already defined in method main(String[])

對策:避免重複使用變數名。使用能夠明確表明其作用的名稱。


  1. 濫用 continue/break

for (int i = 0; i < 5; i++) {
    if (i == 2)
        break; // 本当はスキップしたかったが終了してしまう
    System.out.println(i);
}

範例輸出

0
1

解決方案:如果要跳過處理,請使用continue ;如果要完全退出,請使用break


  1. 對邊界條件的誤解

for (int i = 10; i > 0; i++) { // 条件と更新の向きが逆
    System.out.println(i); // 無限ループに近い動き
}

對策:確保起始值、結束條件、更新方向一致。


概括

  • 仔細檢查下標和條件表達式的邊界

  • 忘記更新或誤導可能會導致無限循環

  • 注意增量位置和範圍

  • 根據您的意圖選擇適當的休息和繼續

  • 養成預測執行結果的習慣可以有效防止錯誤


後記

非常感謝您讀到這裡。

如果那些認為“編程很難…”的人開始認為“它可能很有趣……”,我會很高興。

我也期待您的下一篇文章。


💬歡迎評論和回饋!

“這一章很容易理解!”

“這個表情是不是有點不對啊?”

「接下來我希望你做XX!」等等。

請隨時在評論中告訴我們!


原文出處:https://qiita.com/hitomin_poke/items/69d71b208cc073e608bd


共有 0 則留言


精選技術文章翻譯,幫助開發者持續吸收新知。
站長阿川

站長阿川私房教材:
學 JavaScript 前端,帶作品集去面試!

站長精心設計,帶你實作 63 個小專案,得到作品集!

立即開始免費試讀!