循環嵌套:
就是循環語句的循環體本身是一個循環語句。
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(); } } }