在許多程式語言中,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 關鍵字在多層迴圈的判斷時,必須特別小心!

Written by 

小小的宅宅電腦工程師,從小就是吃草族,用鍵盤寫下我在電腦上的足跡,用照片記錄下我的生活日常,用文字與大家交朋友~

發表迴響