Java流程控制(三)
阿新 • • 發佈:2022-01-16
Java流程控制(三)
迴圈結構
-
while迴圈
while(布林表示式){ //迴圈內容 }
public static void main(String[] args) { int i=0; while(i<=5){ System.out.print(i+" "); i++;//i=i+1 } System.out.println("結束"); } //先進行判斷是否繼續執行操作,再執行迴圈中的操作 //while迴圈,當i小於等於5的時候執行迴圈中的操作,當i大於5的時候跳出迴圈 //迴圈中執行操作:輸出i的值然後讓i加一 //輸出: 0 1 2 3 4 5 結束
public static void main(String[] args) { int i=0; while(i!=0){ System.out.println("輸出"+i); } System.out.println("結束"); } //輸出: 結束
-
do...while迴圈
與while不同,do...while至少會執行一次
do{ //迴圈內容 }while(布林表示式)
public static void main(String[] args) { int i=0; do{ System.out.print(i+" "); i++; }while(i<=5); System.out.println("結束"); } //先執行迴圈裡的操作,再進行判斷是否繼續執行操作 //先輸出i=0,再讓i加一,再讓i比較是否小於等於5 //輸出: 0 1 2 3 4 5 結束
public static void main(String[] args) { int i=0; do{ System.out.println("輸出"+i); }while(i!=0); System.out.println("結束"); } //輸出: 輸出0 結束
-
for迴圈
for(初始化;布林表示式;更新){ //程式碼語句 }
public static void main(String[] args) { for(int i=0;i<5;i++) { System.out.print(i+" "); } System.out.println("結束"); } //設初始值i=0 //當i<5時執行迴圈 //執行完一次操作後執行i++(i值加一),然後再進行i<5的判斷 //在for裡定義的i只在for中有效 //輸出: 0 1 2 3 4 結束
public static void main(String[] args) { int i; for(i=0;i<5;i++){ System.out.print(i+" "); } System.out.println("結束"); System.out.println(i); } //設初始值i=0 //當i<5時執行迴圈 //執行完一次操作後執行i++(i值加一),然後再進行i<5的判斷 //在for之外定義的i在for之外依然有效 //輸出: 0 1 2 3 4 結束 5
//輸出九九乘法表 //用到巢狀for迴圈 public static void main(String[] args) { for(int i=1;i<=9;i++){ for(int j=1;j<=i;j++){ System.out.print(j+"*"+i+"="+(i*j)+" ");//print輸出之後不回車 } System.out.println("");//println輸出之後自動回車 } } //輸出: 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*5=5 2*5=10 3*5=15 4*5=20 5*5=25 1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64 1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
-
陣列增強型for迴圈(java5中開始引用)
主要用於陣列或集合
for(宣告語句 : 表示式) { //程式碼句子 } //宣告語句:宣告新的區域性變數,該變數的型別必須和陣列元素的型別匹配。其作用域限定在迴圈語句塊,其值與此時陣列元素的值相等 //表示式:表示式是要訪問的陣列名,或者是返回值為陣列的方法。
public static void main(String[] args) { int[] a={1,3,5,7};//定義陣列a並賦值 for(int x:a){//定義x遍歷迴圈a裡的值(元素) System.out.print(x+" "); } } //輸出: 1 3 5 7
break、continue、goto
public static void main(String[] args) {
for(int i=0;i<=10;i++){
System.out.print(i+" ");
}
System.out.println("結束");
}
//輸出:
0 1 2 3 4 5 6 7 8 9 10 結束
-
break:
-
break可以用在switch判斷語句和迴圈語句中,用於終止switch判斷和迴圈
-
break可以強制退出迴圈,不執行迴圈中的剩餘語句
public static void main(String[] args) { for(int i=0;i<10;i++){ if(i==5){ break;//終止迴圈 } System.out.print(i+" "); } System.out.println("結束"); } //當i值為5時,通過break終止迴圈,不再往下進行 //輸出: 0 1 2 3 4 結束
-
-
continue:
-
continue可以用在迴圈語句中,用於終止本次迴圈
-
continue可以終止本次迴圈,跳過這次迴圈執行接下來是否執行迴圈的判定
public static void main(String[] args) { for(int i=0;i<=10;i++){ if(i==5){ continue; } System.out.print(i+" "); } System.out.println("結束"); } //當i值為5時,通過continue跳過本次迴圈(不再往下執行直接到i++和i<=10),執行接下來是否執行迴圈的判定 //輸出: 0 1 2 3 4 6 7 8 9 10 結束 //從輸出中可以看到,沒有輸出5,因為先判斷i等於5,之後執行continue,到此本次的迴圈就終止了不再往下進行了而是直接到i++和i<=10判斷上面了
public static void main(String[] args) { for(int i=0;i<=10;i++){ System.out.print("i1="+i+" "); if(i==5){ System.out.println(""); continue;//跳過迴圈(本次迴圈中之後的語句不再執行,直接到i++和i<=10) } System.out.print("i2="+i+" "); System.out.println(""); } System.out.println("結束"); } //從輸出中可以看到,沒有輸出5,因為先判斷i等於5,之後執行continue,到此本次的迴圈就終止了不再往下進行了而是直接到i++和i<=10判斷上面了 //continue指結束本次迴圈,本次迴圈中之後的操作不再進行,但本次迴圈中continue之前已經執行過的操作就沒辦法了 //輸出: i1=0 i2=0 i1=1 i2=1 i1=2 i2=2 i1=3 i2=3 i1=4 i2=4 i1=5 i1=6 i2=6 i1=7 i2=7 i1=8 i2=8 i1=9 i2=9 i1=10 i2=10 結束 //從輸出中可以看到,i等於5時通過continue結束本次迴圈,所以之後的i2=5不再輸出,但i1=5是在本次迴圈中的continue之前執行的,所以無法停止(預設順序執行)
-
-
goto:
-
Java中沒有goto
-
在break和continue兩個關鍵字上能看出一些goto的影子(帶標籤的break和continue)
-
標籤:
標籤指後面跟著一個冒號的識別符號,如:label:
-
不建議使用goto
-
列印三角形
public static void main(String[] args) {
for(int i=5;i>=0;i--){
for(int j=0;j<=i;j++){
System.out.print(" ");
}
for(int j=5;j>=i;j--){
System.out.print("*");
}//本行左半部分
for(int j=5;j>i;j--){
System.out.print("*");
}//本行右半部分
System.out.println("");//換到下一行
}
}
//輸出:
*
***
*****
*******
*********
***********