迴圈嵌套: 就是迴圈語句的迴圈體本身是一個迴圈語句。 Demo1 需求:請輸出一個4行5列的星星(*)圖案。 結果: ***** ***** ***** ***** 結論: 外迴圈控制行數 內迴圈控制列數 Demo2 需求:請輸出下列的形狀 * ** *** **** ***** Demo3 需求: ...
迴圈嵌套:
就是迴圈語句的迴圈體本身是一個迴圈語句。
Demo1
需求:請輸出一個4行5列的星星(*)圖案。
結果:
*****
*****
*****
*****
結論:
外迴圈控制行數
內迴圈控制列數
class ForForDemo { public static void main(String[] args) { //原始做法 System.out.println("*****"); System.out.println("*****"); System.out.println("*****"); System.out.println("*****"); System.out.println("-------------"); //雖然可以完成需求,但是不是很好 //如果是多行多列就會比較麻煩 //所以我們準備改進 //如何改進呢? //我先考慮如何實現一行*的問題 //System.out.println("*****"); //我們要想的是如何實現一次輸出一顆*的問題 //System.out.println("*"); //System.out.println("*"); //現在雖然可以一次一顆*,但是卻換行了,我要求不能換行,怎麼辦呢? //輸出語句的另一種格式:System.out.print(); 這個是不帶換行的 //System.out.print("*"); //System.out.print("*"); //System.out.print("*"); //System.out.print("*"); //System.out.print("*"); //如果我要在一行上打出多顆*,比較麻煩,而代碼是重覆的,所以我決定用迴圈改進 for(int x=0; x<5; x++) { System.out.print("*"); } //我們可以通過空的輸出語句實現換行:System.out.println(); System.out.println(); //既然我可以打出一行,我就可以打出第二行 for(int x=0; x<5; x++) { System.out.print("*"); } //我們可以通過空的輸出語句實現換行:System.out.println(); System.out.println(); //同理打出第三行,第四行 for(int x=0; x<5; x++) { System.out.print("*"); } //我們可以通過空的輸出語句實現換行:System.out.println(); System.out.println(); //既然我可以打出一行,我就可以打出第二行 for(int x=0; x<5; x++) { System.out.print("*"); } //我們可以通過空的輸出語句實現換行:System.out.println(); System.out.println(); System.out.println("-----------------"); //同樣的代碼出現了4次,說明我們程式寫的不好,用迴圈改進 for(int y=0; y<4; y++) { for(int x=0; x<5; x++) { System.out.print("*"); } //我們可以通過空的輸出語句實現換行:System.out.println(); System.out.println(); } } }
Demo2
需求:請輸出下列的形狀
*
**
***
****
*****
class ForForDemo2 { public static void main(String[] args) { //通過簡單的觀察,我們看到這是一個行是5,列數是變化的形狀 //我們先列印出一個5行5列的形狀 for(int x=0; x<5; x++) { for(int y=0; y<5; y++) { System.out.print("*"); } System.out.println(); } System.out.println("--------------"); //我們實現了一個5行5列的形狀 //但是這不是我們想要的 //我們要的是列數變化的 //列數是如何變化的呢? //第一行:1列 y=0,y<=0,y++ //第二行:2列 y=0,y<=1,y++ //第三行:3列 y=0,y<=2,y++ //第四行:4列 y=0,y<=3,y++ //第五行:5列 y=0,y<=4,y++ //在看外迴圈x的變化,恰好就是x=0,1,2,3,4 //所以這個最終版的程式就是如下 for(int x=0; x<5; x++) { for(int y=0; y<=x; y++) { System.out.print("*"); } System.out.println(); } } }
Demo3
需求:在控制台輸出九九乘法表。
首先我們寫出九九乘法表:
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
...
1*9=9 2*9=18 3*9=27 ...
我們先把這個九九乘法表看出是這樣的一個形狀:
*
**
***
****
*****
******
*******
********
*********
class ForForDemo3 { public static void main(String[] args) { for(int x=0; x<9; x++) { for(int y=0; y<=x; y++) { System.out.print("*"); } System.out.println(); } System.out.println("--------------"); //為了使用數據,我們從1開始 for(int x=1; x<=9; x++) { for(int y=1; y<=x; y++) { System.out.print(y+"*"+x+"="+y*x+"\t"); /* 註意: '\x' x表示任意,這種做法叫轉義字元。 '\t' tab鍵的位置 '\r' 回車 '\n' 換行 */ } System.out.println(); } } }