Java for迴圈之雙層迴圈巢狀 執行流程

2021-08-04 14:37:38 字數 1994 閱讀 6726

for迴圈單層迴圈執行流程:

接下來看雙層迴圈:

迴圈巢狀是指在乙個迴圈語句中再定義乙個迴圈語句的語法結構。

while、do.. while和for迴圈語句都可以進行巢狀,並且他們之間可以進行互相巢狀。最常見的是在for迴圈中巢狀for迴圈。格式如下

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

}實現使用 「 * 」 列印直角三角形

public class demo1 

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

} }}

該例中定義了兩層 for 迴圈,執行結果如圖所示:

在其中定義了兩層 for 迴圈,分別為外層迴圈和內層迴圈,外層迴圈用於控制列印的行數。內層迴圈用於列印「 * 」,每一行的「 * 」個數逐行增加,最後輸出乙個直角三角形。下面分步驟進行詳細地講解,具體如下:

首先,在第 3 行**定義了兩個迴圈變數 i 和 j ,其中 i 為外層迴圈變數,j 為內層迴圈變數。

第一步,在第 4 行**將 i 初始化為 0,條件 i<=7 為true,首次進入外層迴圈的迴圈體。

第二步,在第 5 行**將 j 初始化為 1,由於此時 i 的值為 0,條件 j<=i (1<=0)為 false,內層迴圈結束,執行後邊的**,列印換行符。

第三步,執行第 4 行**中外層迴圈的操作表示式 i++, 將 i 的值自增為 1.

第四步,執行第 4 行**中的判斷條件 i<=7(1<=7),判斷結果為 true,進入外層迴圈的迴圈體,繼續執行內層迴圈。

第五步,執行第 5 行**中的判斷條件 j<=i(1<=1),首次進入內層迴圈的迴圈體,列印乙個「 * 」。

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

第七步,執行第 5 行**中的判斷條件 j<=i(2<=1) ,判斷結果為 false,內層迴圈結束,執行後面的**,列印換行符。

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

第九步,執行第 4 行**中的判斷條件 i<=7 ,判斷結果為 true,進入外層迴圈的迴圈體,繼續執行內層迴圈。

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

(i=2,j=1,j<=i 為true,列印 「 * 」 ;

j++,j=2,j<=i 為true,再列印乙個 「 * 」 ;

j++,j=3,j<=i 為false,內層迴圈結束,執行後邊的**,列印換行符)

第十一步,依次類推,在第 3 行會列印 3 個「 * 」,逐行遞增,直到 i 的值為 8 時,外層迴圈的判斷條件 i<=7 結果為 false ,外層迴圈

結束,整個程式也就結束了。

例子二:

分步驟:

t==true  f==false

第一步i=1,i<5 (t), j=2, i<=i (f),i++

第二步i=2,i<5 (t), j=2,j<=i (t),#,j++

j=3,j<=i (f) 結束內層迴圈,i++

第三步i=3,i<5 (t), j=2, j<=i (t),#,j++

j=3,j<=i (t), # , j++

j=4,j<=i (f) 結束內層迴圈,i++

第四步i=4,i<5 (t), j=2, j<=i(t),#,j++

j=3,j<=i (t), # , j++

j=4,j<=i (t), # , j++

j=5,j<=i (f) 結束記憶體迴圈,i++

第五步i=5,i<5 (f) 結束外層迴圈

隨筆 java for迴圈

本人之前對for迴圈,只知道基本的用法,但是對具體的檢查判斷條件 變數改變的時機把握的不是很準,尤其是巢狀幾層的時候,就更糊塗了,如果面試筆試的時候碰上類似的問題,如果答錯就直接悲劇了。所以特此記錄一下,等以後又忘記的時候看看,可以節省很多時間,呵呵。initialize judge print v...

Java for迴圈結構

1.for迴圈語法 for 初始化表示式 布林表示式 更新表示式 2.for迴圈執行原理 1 初始化表示式 布林表示式 更新表示式,都不是必須的 但兩個分號是必須的 2 初始化表示式最先執行,並且在整個for迴圈當中只執行一次 3 布林表示式必須是true false,不能是其他值 4 for迴圈的...

for雙層迴圈詳解

include main x printf x d n x printf x d n x 123456788 int i,j,m 0,n 0 for i 0 i 2 i printf d n n 1 includemain system.out.println 首先程式會執行 給i初始化賦值0 然後...