1. 程式人生 > >無限迴圈與巢狀迴圈

無限迴圈與巢狀迴圈

1.無限迴圈

最簡單無限迴圈格式:

while(true){}

for(;;){}

無限迴圈存在的原因是並不知道迴圈多少次,而是根據某些條件,來控制迴圈。

2.巢狀迴圈

巢狀迴圈是指在一個迴圈語句的迴圈體中再定義一個迴圈語句的語法結構。while、do…while、for迴圈語句都可以進行巢狀,並且它們之間也可以互相巢狀,如最常見的在for迴圈中巢狀for迴圈,格式如下:

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

    ………

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

        執行語句

        ………

    }

    ………

}

接下來通過一個練習,來實現使用“*”列印直角三角形,如下所示。ForForDemo.java

 1   public class ForForDemo {

 2       public static void main(String[] args) {

 3           int

i, j; // 定義兩個迴圈變數

 4           for (i = 1; i <= 9; i++) { // 外層迴圈

 5               for (j = 1; j <= i; j++) { // 內層迴圈

 6                   System.out

.print("*"); // 列印*

 7               }

 8               System.out.print("\n"); // 換行

 9           }

 10      }

 11  }

執行結果如下所示。

 

在上述程式碼中定義了兩層for迴圈,分別為外層迴圈和內層迴圈,外層迴圈用於控制列印的行數,內層迴圈用於列印“*”,每一行的“*”個數逐行增加,最後輸出一個直角三角形。由於巢狀迴圈程式比較複雜,下面分步驟進行詳細地講解,具體如下:

第一步,在第3行程式碼定義了兩個迴圈變數i和j,其中i為外層迴圈變數,j為內層迴圈變數。

第二步,在第4行程式碼將i初始化為1,條件i <= 9為true,首次進入外層迴圈的迴圈體。

第三步,在第5行程式碼將j初始化為1,由於此時i的值為1,條件j <= i為true,首次進入內層迴圈的迴圈體,列印一個“*”。

第四步,執行第5行程式碼中內層迴圈的操作表示式j++,將j的值自增為2。

第五步,執行第5行程式碼中的判斷條件j<=i,判斷結果為false,內層迴圈結束。執行後面的程式碼,列印換行符。

第六步,執行第4行程式碼中外層迴圈的操作表示式i++,將i的值自增為2。

第七步,執行第4行程式碼中的判斷條件i<=9,判斷結果為true,進入外層迴圈的迴圈體,繼續執行內層迴圈。

第八步,由於i的值為2,內層迴圈會執行兩次,即在第2行列印兩個“*”。在內層迴圈結束時會列印換行符。

第九步,以此類推,在第3行會列印3個“*”,逐行遞增,直到i的值為10時,外層迴圈的判斷條件i <= 9結果為false,外層迴圈結束,整個程式也就結束了。