1. 引言
經常會有這樣的情況:你不需要把迴圈的所有反覆運算都跑完,而是要在找到目標元素時提前退出。在其他情況下,你需要略過部分工作並進入下一步(例如你已讀取了資料,想略過其處理)。 這就是在迴圈內部進行流程控制。
運算子 break 與 continue 在 Java 中正是為此而設。讓我們來了解它們如何運作,以及在真實任務中會帶來哪些幫助。
2. 運算子 break: 「停下!」
理論與語法
運算子 break 用於在迴圈的任何位置立即退出。一旦程式執行到 break,迴圈就會立刻結束,接著從迴圈之後的第一行程式碼開始繼續執行。
while (uslovie)
{
if (kakoe-to_uslovie)
{
break;
}
// 其餘的迴圈程式碼
}
在迴圈
while 中使用
break
同樣也適用於 for 與 do-while:
for (int i = 0; i < 10; i++)
{
if (kakoe-to_uslovie)
{
break;
}
// 其餘的迴圈程式碼
}
範例 1:檢查數是否為質數
一個數若只可被 1 與它本身整除,則為質數。我們需要檢查某個數是否為質數:從 2 到 n-1 遍歷所有可能的因數。如果發現此數能被某個因數整除,就不必再檢查——這個數不是質數!可以結束迴圈。
範例:
int number = 111;
boolean found = false;
for (int i = 2; i < number; i++)
{
if (number % i == 0)
{
found = true;
System.out.println("找到了因數 " + i );
break; // 停止迴圈,無需再搜尋!
}
}
if (!found)
{
System.out.println("未找到因數——該數是質數。");
}
範例 2:驗證使用者輸入
讓我們寫一個小應用,例如用來收集資料的互動式問卷:
while (true)
{
System.out.print("請輸入你的年齡: ");
if (console.hasNextInt())
{
int age = console.nextInt();
if (age > 0)
{
System.out.println("太好了!你的年齡: " + age);
break; // 資料正確 — 離開迴圈
}
else
{
System.out.println("錯誤!請輸入正整數的年齡。");
}
}
else
{
System.out.println("錯誤!請輸入數字。");
console.nextLine(); // 消耗無效輸入
}
}
為什麼需要這樣做:
有時需要讓迴圈持續(甚至無限)執行,直到使用者輸入正確的資料。一旦發生了我們期待的事件——就使用 break,並最終退出迴圈。
3. 運算子 continue: 「下一位,請!」
理論與語法
與 break 不同,運算子 continue 並不結束整個迴圈,而只會中斷當前這次的反覆運算:在迴圈主體中,寫在 continue 後面的內容將不會執行——流程會直接進入下一次反覆運算。
for (int i = 0; i < 10; i++)
{
if (uslovie)
{
continue;
}
// 只有在未觸發 continue 時才會執行這一段
}
在迴圈
for 中使用
continue
範例 3:跳過偶數
假設你只需要輸出區間內的奇數;偶數要跳過。
for (int i = 1; i <= 10; i++)
{
if (i % 2 == 0)
{
continue; // 若為偶數——就把下面的全部跳過!
}
System.out.println("奇數:" + i);
}
使用
continue 來跳過偶數
運作方式:
當 i = 2, 4, 6... 時,迴圈遇到 continue 便會立刻跳到下一次反覆運算,而不執行 System.out.println。
逐步視覺化流程:
| i | i % 2 == 0 | 動作 |
|---|---|---|
| 1 | false | 輸出,沒有 continue |
| 2 | true | continue,沒有輸出 |
| 3 | false | 輸出,沒有 continue |
| ... | ... | ... |
運算子 break 與 continue 非常常用,幾乎在許多迴圈中都會出現。你會喜歡使用它們。
GO TO FULL VERSION