程式設計中迴圈的 break 和 continue 之差異

在許多程式語言中,break 和 continue在迴圈的控制中,一直佔有非常重要的地位,他們不僅可以控制迴圈的執行,如果使用得當,也可以讓您的程式架構更加讓人容易明暸。而這兩個都是屬於忽略下列的運算式而直接跳出迴圈的,只不過continue還要再跳入迴圈做判斷,break則直接跳出迴圈。

舉一個例子來看好了。

for(int i=0;i<=5;i++)
{
   if(i==2)
     continue;
   else if(i==4)
     break;
   System.out.println(i);
}

此程式一開始會判斷 i 的值,因為一開始我們給定 i 的初始值為 0,所以在 if..else if 的地方,並不會符合條件式,這個情形一直持續到 i=2 為止。因為 i=2,已經符合我們的條件判斷式了,所以我們這時侯程式會執行 continue,並且忽略下面的的程式碼,重新回到迴圈做判斷,這時 i 會變3,再跳入迴圈中繼續執行程式碼。來到了 i=4 的地方,又符合我們的條件判斷式了,所以我們這時侯程式會執行break,同樣地,會忽略下面的的程式碼,但在此時就跳出迴圈了喔,所以整個迴圈就不再執行。

所以,根據以上的理論,您可以很輕易地知道這個迴圈要印出的結果為「0、1、3」。

但是,也有可能是在兩個 for 迴圈中有  break,舉例來說,如以下的程式碼,那麼會跳出那一個呢?我們就直接執行程式碼,來看一下答案。

for(int i=0;i<=5;i++)
{
    for (int j =0; j <= 5; j++)
    {
        if( j == 2)
            continue;
        else if(j == 4)
            break;
        System.out.println("i = "+ i + ", j = " + j);
    }
}
//i = 0, j = 0
//i = 0, j = 1
//i = 0, j = 3
//i = 1, j = 0
//i = 1, j = 1
//i = 1, j = 3
//i = 2, j = 0
//i = 2, j = 1
//i = 2, j = 3
//i = 3, j = 0
//i = 3, j = 1
//i = 3, j = 3
//i = 4, j = 0
//i = 4, j = 1
//i = 4, j = 3
//i = 5, j = 0
//i = 5, j = 1
//i = 5, j = 3

沒錯,當 break、continue 只會針對含有 break 、continue 的區塊做繼續或是跳出的動作。所以在使用 break、continue 關鍵字在多層迴圈的判斷時,必須特別小心!

Subscribe
Notify of
guest

0 Comments
Inline Feedbacks
View all comments