1. 程式人生 > >IT兄弟連 Java語法教程 流程控制語句 迴圈結構語句2

IT兄弟連 Java語法教程 流程控制語句 迴圈結構語句2

雙重for迴圈

如果把一個迴圈放在另一個迴圈體中,那麼就可以形成巢狀迴圈,也就是雙重for迴圈,當然巢狀迴圈也可以是for迴圈巢狀while迴圈,也可以是while迴圈巢狀while迴圈……,即各種型別的迴圈都可以作為外層迴圈,也可以作為內層迴圈。

當程式遇到巢狀迴圈時,如果外層迴圈的迴圈條件允許,則開始執行外層迴圈的迴圈體,而內層迴圈將被外層迴圈的迴圈體來執行--只是內層迴圈需要反覆執行自己的迴圈體而已。當內層迴圈執行結束,且外層迴圈的迴圈體執行結束時,則再次計算外層迴圈的迴圈條件,決定是否再次開始執行外層迴圈的迴圈體。

根據上面分析,假設外層迴圈的迴圈次數為n次,內層迴圈的迴圈次數為m次,那麼內層迴圈的迴圈體實際上需要執行n x m次。巢狀迴圈的執行流程如圖4.14所示:

從上圖來看,巢狀迴圈就是把內層迴圈當成外層迴圈的迴圈體。當只有內層迴圈的迴圈條件為false時,才會完全跳出內層迴圈,才可以結束外層迴圈的當次迴圈,開始下一次迴圈。下面是一個經典的使用雙重for迴圈在控制檯列印三角形的示例程式碼:

public class ForDemo3{

    public static void main(String[] args){

         for(int i = 0; i <= 5; i++){

              for(int j = 0; j < i; j++){

                   System.out.println("*");

              }

              System.out.println(" ");

         }

    }

}

a60a76fa5aed4b0d87dc797ec40904c0.png

圖14  雙重for迴圈

 

編譯並執行這個程式,控制檯將顯示如圖15所示的資訊。

32bc6b99216c4e1eb434d7fab60ee931.png

圖15  ForDemo3執行結果

 

當然,在迴圈中不僅可以巢狀一層迴圈,理論上來說是可以無限巢狀的,但是如果迴圈巢狀的過多的話,會影響程式的效能,而且閱讀起來也會非常吃力,所以在開發時應避免使用更深