1、嵌套循環java
循環能夠互相嵌套,以實現更加複雜的邏輯,其代碼的複雜程度也會提升,對初學者而言這應該是個難點,下面咱們經過一些例子說明嵌套循環的使用,讀者要本身把這些代碼上機練習,並理解程序運行的流程。spa
先看看一個簡單例子,代碼以下:code
//二重循環 for(int i=0;i<3;i++){ for(int j=0;j<2;j++){ System.out.println("i="+i+",j="+j); } }
上面是一個二重循環,由於在for循環裏又嵌套了一個循環,固然循環能夠無限嵌套,因此也就是有無限重的循環,可是通常咱們寫代碼的時候不多超過三重循環。blog
在第一層循環中,循環的控制頭和上面介紹的沒有不一樣,僅僅只是該循環的循環體裏又包含了一個循環,咱們須要的是理解這段程序的執行流程:ip
外層循環i=0時,條件知足進入循環體,並執行第二層循環,for循環
第二層循環是j=0,條件知足進入循環體,並執行裏面的輸出語句,輸出:class
i=0,j=0cli
而後仍是第二層的循環尚未結束,繼續執行,這個時候j=1,因此輸出:循環
i=0,j=1;程序
第二層循環結束。
這個時候外層循環尚未結束,i自增1後,又進入循環,並再次執行第二層循環這個時候i=1,又再一次的執行了第二層的循環:
第二層循環是j=0,條件知足進入循環體,並執行裏面的輸出語句,輸出:
i=1,j=0
而後仍是第二層的循環尚未結束,繼續執行,這個時候j=1,因此輸出:
i=1,j=1;
第二層循環結束。
相似的,這個時候外層循環尚未結束,i自增1後,i=2又進入二層循環,因此這個程序最後的輸出結果是:
i=0,j=0
i=0,j=1
i=1,j=0
i=1,j=1
i=2,j=0
i=2,j=1
下面咱們再具一個稍微複雜一點的程序:輸出乘法表。
1×1=2
1×2=2 2×2=4
1×3=3 2×3=6 3×3=9
...
1X9 ... ... 9X9=81
實現代碼以下:
for(int i=1;i<10;i++){ for(int j=1;j<=i;j++){ System.out.print(j+"X"+i+"="+(i*j)+" "); } System.out.println(); }
2、break
break與continue語句和都是能夠控制循環的執行流程的,其中break語句能夠直接強行跳出整個循環,默認狀況下直接跳到下一條語句進行執行。好比咱們要輸出相似下面的三角形星號符。
*
* *
* * *
* * * *
* * * * *
* * * * * *
* * * * * * *
實現代碼以下:
public class Test { //三角形的高度 // 直角三角形的高度 int hight = 0; System.out.println("請輸入三角形的高度:"); // 提示信息 Scanner scnr = new Scanner(System.in); // 獲取控制檯輸入 hight = scnr.nextInt(); // 在控制檯輸入中取下一個int值 for (int i = 0; i < hight; i++) { // 按hight的高度一層一層打印 for (int j = 0; j < hight; j++) { // 每次繼續迭代,原則第一層打一個, 第二層打二個,第三層打三個… if (j <= i) { System.out.print("*"* "); } else { // 退出循環的條件,好比在第二層打 第三個是退出 break; //後面不能寫代碼了,會提示錯誤 } } System.out.println(); // 每層的換行符 }
讀者能夠上機演示上面的代碼。注意在嵌套循環中break只能跳出本身的循環體,對於父循環體沒有任何影響。直接寫在break語句後面的代碼在Eclipse中會提示錯誤,由於這些語句具備不可達性。
前面介紹過在java中沒有goto語句,可是在循環中使用break語句能夠達到相似goto語句的效果,這種用法是在break語句中添加行標號,控制會被傳遞給當前方法中的帶有這一標號的語句,這種格式的寫法以下:
break label;
3、continue語句
continue語句語句和break語句同樣都是指退出循環,可是區別在於continue特指退出當前一層循環,繼續下一層循環的執行。能夠認爲是continue是對break語句的一種補充機制,提供了終止當前一層循環繼續去判斷循環控制表達式進而繼續執行循環體的可能。Continue跟break相似,一樣提供相似goto的功能:
continue toCode;
注意退出循環的方法除了使用break語句/continue語句外,你還可使用return,return的優先級別很是高,在任何狀況下它都會直接終止當前方法的運行。參考下面的示例:
for (int i = 0; i < 3; i++) { System.out.println("開始第" + i + "次for循環"); if (i == 1) { continue;//程序運行後面的代碼就不會執行,但循環不會退出。 } System.out.println("看看continue後這裏執行了嗎?"); }