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(" ");
}
}
}
圖14 雙重for迴圈
編譯並執行這個程式,控制檯將顯示如圖15所示的資訊。
圖15 ForDemo3執行結果
當然,在迴圈中不僅可以巢狀一層迴圈,理論上來說是可以無限巢狀的,但是如果迴圈巢狀的過多的話,會影響程式的效能,而且閱讀起來也會非常吃力,所以在開發時應避免使用更深