1. 程式人生 > >幾種迴圈語句

幾種迴圈語句

1.迴圈語句while

while迴圈語句和選擇結構if語句有些相似,都是根據條件判斷來決定是否執行大括號內的執行語句。區別在於,while語句會反覆地進行條件判斷,只要條件成立,{}內的執行語句就會執行,直到條件不成立,while迴圈結束。while迴圈語句的語法結構如下:

while(迴圈條件){

執行語句

………

}

在上面的語法結構中,{}中的執行語句被稱作迴圈體,迴圈體是否執行取決於迴圈條件。當迴圈條件為true時,迴圈體就會執行。迴圈體執行完畢時會繼續判斷迴圈條件,如條件仍為true則會繼續執行,直到迴圈條件為false時,整個迴圈過程才會結束。

while迴圈的執行流程如下圖所示

接下來通過一段程式碼,來實現列印1~4之間的自然數,WhileDemo.java

public class WhileDemo {

    public static void main(String[] args) {

        int x = 1; // 定義變數x,初始值為1

        while (x <= 4) { // 迴圈條件

            System.out

.println("x = " + x); // 條件成立,列印x的值

            x++; // x進行自增

        }

    }

}

執行結果如下圖所示。

 

在上述程式碼中,x初始值為1,在滿足迴圈條件x <= 4的情況下,迴圈體會重複執行,列印x的值並讓x進行自增。因此列印結果中x的值分別為1、2、3、4。

大家要注意的是,程式碼x++用於在每次迴圈時改變變數x的值,從而達到最終改變迴圈條件的目的。如果沒有這行程式碼,整個迴圈會進入無限迴圈的狀態,永遠不會結束。

2.迴圈語句for

for迴圈語句是最常用的迴圈語句,一般用在迴圈次數已知的情況下。for迴圈語句的語法格式如下:

for(初始化表示式; 迴圈條件; 操作表示式){

    執行語句

    ………

}

在上面的語法結構中,for關鍵字後面()中包括了三部分內容:初始化表示式、迴圈條件和操作表示式,它們之間用“;”分隔,{}中的執行語句為迴圈體。

接下來分別用①表示初始化表示式、②表示迴圈條件、③表示操作表示式、④表示迴圈體,通過序號來具體分析for迴圈的執行流程。具體如下:

for(① ; ② ; ③){

    ④

}

第一步,執行①

第二步,執行②,如果判斷結果為true,執行第三步,如果判斷結果為false,執行第五步

第三步,執行④

第四步,執行③,然後重複執行第二步

第五步,退出迴圈

接下來通過一個案例對自然數1~4進行求和,如下所示。ForDemo01.java

public class ForDemo01 {

    public static void main(String[] args) {

        int sum = 0; // 定義變數sum,用於記住累加的和

        for (int i = 1; i <= 4; i++) { // i的值會在1~4之間變化

            sum += i; // 實現sum與i的累加

        }

        System.out.println("sum = " + sum); // 列印累加的和

    }

}

執行結果如下圖所示。

上述程式碼中,變數i的初始值為1,在判斷條件i<=4為true的情況下,會執行迴圈體sum+=i,執行完畢後,會執行操作表示式i++,i的值變為2,然後繼續進行條件判斷,開始下一次迴圈,直到i=5時,條件i<=4為false,結束迴圈,執行for迴圈後面的程式碼,列印“sum=10”。

為了讓初學者能熟悉整個for迴圈的執行過程,現將上述程式碼執行期間每次迴圈中變數sum和i的值通過表2-11羅列出來。

表2-1            sum和i迴圈中的值

迴圈次數

sum

i

第一次

1

1

第二次

3

2

第三次

6

3

第四次

10

4

3.迴圈語句do…while

do…while迴圈語句和while迴圈語句功能類似,其語法結構如下:

do {

執行語句

………

} while(迴圈條件);

在上面的語法結構中,關鍵字do後面{}中的執行語句是迴圈體。do…while迴圈語句將迴圈條件放在了迴圈體的後面。這也就意味著,迴圈體會無條件執行一次,然後再根據迴圈條件來決定是否繼續執行。

do…while迴圈的執行流程如下圖所示。

接下來使用do…while迴圈語句來實現列印1~4之間的自然數DoWhileDemo.java。

public class DoWhileDemo {

    public static void main(String[] args) {

        int x = 1; // 定義變數x,初始值為1

        do {

            System.out.println("x = " + x); // 列印x的值

            x++; // 將x的值自增

        } while (x <= 4); // 迴圈條件

    }

}

執行結果如下圖所示。

 

我們發現WhileDemo.java與DoWhileDemo.java執行的結果一致,這說明什麼呢?這說明do …while迴圈和while迴圈能實現同樣的功能。然而在程式執行過程中,這兩種語句還是有差別的。如果迴圈條件在迴圈語句開始時就不成立,那麼while迴圈的迴圈體一次都不會執行,而do…while迴圈的迴圈體還是會執行一次。若將DoWhileDemo.java中的迴圈條件x<=4改為x < 1,DoWhileDemo.java執行結果會列印x=1,而WhileDemo.java執行結果什麼也不會列印。