基礎程式設計(10)-強制終止迴圈

前面兩章描述了for迴圈和while迴圈的使用方法,在正常的情況下我們會讓迴圈一直執行到結束。不過,有的時候會有特殊狀況必須要強制終止迴圈,或是暫時停止執行迴圈裡的程式。這時就要使用特殊終止迴圈的語法。

跳離迴圈的break敘述

程式執行的時候,如果需要強迫終止迴圈,可以使用C風格語言的 break,或是BASIC語言的Exit For/While/Do。當程式執行到這一行時,無論迴圈執行到那一個階段,都會離開迴圈。我們來寫一個輸出i = 1 到 10 的簡單程式(以下為Java語法):

int i = 0;
while (true) {
    i++;
    System.out.println("i = " + i); //輸出 i = ?
    if(i == 10) break;
}

因為第 2 行的 while 裡是 true,所以程式會一直不斷執行,永遠不停止(無窮迴圈)。不過我們在第 5 行指定了一個條件,當 i=10 就離開迴圈。所以這支程式會輸出i = 1 到 10 的結果。

在BASIC語言的使用上除了語法不同,其它沒有什麼差別。不過它的語法是「Exit 陳述式」,所以還必須根據迴圈的類型,把關鍵字寫上去,變成 Exit For、Exit While、Exit Do 的形式。而C風格語言則是一個 break 就可以用在所有的迴圈中(for、while、do while)。當程式執行到 break 敘述時,無論下面還剩多少行程式碼,都會立即跳離迴圈。

取消一次的continue

在C風格語言中還有另一種終止語法可以使用,不過它只是”跳出這一回合”,並不是完全脫離迴圈。用個範例來說會比較容易了解(以下為Java語法):

for(int i=1; i<=10; i++) {
    if( (i % 2) == 0) continue;
    System.out.println("i = " + i); //輸出 i = ?
}

上面第 2 行 (i % 2) == 0 是用來檢查 i 是否為 2 的倍數,如果是的話就”結束這一回合”,所以第 3 行程式碼就不會被執行,直接跳回第 1 行。因此這段程式碼最後輸出的結果會是:i = 1、i = 3、i = 5、i = 7、i = 9。一般來說,continue 使用的機會比 break 少一點,所以在BASIC語言中並沒有提供這種語法。