Java 循環語句之多重循環
循環體中包含循環語句的結構稱為多重循環。三種循環語句可以自身嵌套,也可以相互嵌套,最常見的就是二重循環。在二重循環中,外層循環每執行一次,內層循環要執行一圈。
如下所示:
接下來我們通過兩個最簡單的多重循環程序來深入理解多重循環的執行過程~
1、使用 * 打印長方形:
實現代碼為:
System.out.println("打印長方形"); // 外層循環控制行數 for (int i = 1; i <= 3; i++) { // 內層循環控制每行的*號數 for (int j = 1; j <= 8; j++) { System.out.print("*"); } // 每打印完一行后進行換行 System.out.println(); }
執行流程:當 i = 1 時,外層循環條件成立,進入內層循環,開始打印第一行內容。此時, j 從 1 開始,循環 8 次,內層循環結束后換行,實現第一行 8 個 * 的輸出。接下來返回外層循環 i 變為 2 ,准備打印下一行,依此類推,直到完成長方形的打印。
2.使用 * 打印直角三角形:
實現思路:上面的圖形中,第 1 行有一個 * 號,第 2 行有兩個 * 號,第 3 行有三個 * 號,所以可以使用二重循環來實現。其中,外層循環控制行數,內層循環控制每行的 * 號數。同時,我們發現一個規律,當打印每行信息時,內層循環變量的最大值和外層循環變量的值相等。
實現代碼為:
System.out.println("打印直角三角形"); // 外層循環控制行數 for (int i = 1; i <= 3; i++) { // 內層循環控制每行的*號數 // 內層循環變量的最大值和外層循環變量的值相等 for (int j = 1; j <= i; j++) { System.out.print("*"); } // 每打印完一行后進行換行 System.out.println(); }
3.進階——打印九九乘法表:
經過上面兩個簡單的例子我們可以挑戰用雙重循環來打印九九乘法表了~
實現思路:觀察九九乘法表的結構和直角三角形很相似,所以我們可以直接在上面的第二個例子里作文章,關鍵只要修改內嵌循環中打印的內容就可以了。如何修改就要仔細觀察九九乘法表到底是如何實現的,它一共有九行,那么最外面的循環最大值也應該是9;然后我們觀察每行的規律,不難得出,假設每行的每個算式為j*i,j從1開始遞增,且j的最大值為它所在的行數(與外層循環次數相同),而i則是等於它所在的行數,那么我們把j這個變量設計為第二層循環嵌套的變量,使它的最大值等於外層i的變量的值。最后注意一下print函數輸出的格式就可以了~
實現代碼:
System.out.println("打印九九乘法表"); // 外層循環控制行數,總共有9層 for (int i = 1; i <= 9; i++) { // 內層循環控制每行的乘法算式 // 內層循環變量的最大值和外層循環變量的值相等(相當於直角三角形) for (int j = 1; j <= i; j++) { System.out.print(j+"*"+i+"="+(j*i)+" "); } // 每打印完一行后進行換行 System.out.println(); }
4、判斷一個數(小於10位)的位數。
內容:判斷一個數(小於10位)的位數。
輸入999,則輸出 “它是個3位的數!”
實現思路:判斷一個數的位數,我們通常要用1/10/100/..來對這個數求除數(並且截去小數點取整),直到除數結果為0,則說明這個數不屬於除數的位數。那么我們用count變量來存儲位數的遞增(從0開始);定一個循環變量i,初始值為1,每次循環乘以10;循環結束條件為需要判斷的數除以i結果等於0。
實現代碼:
int num = 999; int count = 0; for (int i = 1; num / i != 0; i *= 10) { count++; } System.out.println("它是個" + count + "位的數!");
運行結果:
這節主要為大家介紹了幾個多重循環的學習小例子,雖然它們都是那么微不足道,但是簡短而不簡單,這幾個例子對鞏固循環的基礎還是有很大幫助的,多謝關注~