【JAVA】程式的控制結構
程式的控制結構
順序結構
1> 程式是自上而下執行的,不需要藉助任何特殊的語句就可以實現;
2> 程式語句只能被執行一次
package code; import java.util.Scanner; //實現從鍵盤輸入 public class Demo{ public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("輸入兩個整數:"); int x = scanner.nextInt();int y = scanner.nextInt(); int sum = x + y; System.out.println("求和:sum = " + sum); } }
編譯結果:
分支結構
if 條件語句
1> 依次從上到下執行,表示式成立 執行{}內語句,不成立不執行
// 語法 if (表示式){ 表示式成立時執行的語句; }else if(表示式){
語句;
}else if(表示式){
語句;
}else{
語句;
}
if…… else if …… else if …… else……
package code;import java.util.Scanner; //實現從鍵盤輸入 public class Demo{ public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("輸入兩個整數:"); int x = scanner.nextInt(); int y = scanner.nextInt(); if (x<y){ int sum = x + y; System.out.println("當x<y時,x+y = " + sum); }else if(x>y){ int jianfa = x-y; System.out.println("當x>y時,x-y = " + jianfa); }else { System.out.println("不滿足計算條件,x=y"); } } }
編譯結果:
空語句
package code; import java.util.Scanner; //實現從鍵盤輸入 public class Demo{ public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("輸入兩個整數:"); int x = scanner.nextInt(); int y = scanner.nextInt(); if (x == y); } }
編譯結果:
switch case
判斷一個變數與一系列值中某個值是否相等,每個值稱為一個分支
1> case從上到下執行,當表示式的值與case中的值相同時,則執行該case中的語句塊;
2> case可以0~n個
3> case後需要加break,如果不加break,會從第一個case開始執行,直到遇到break為止;
4> default的位置可以放在與case並列的任何一個位置上;
// 語法結構 switch(variable){ case "value" : //語句 break; //跳出判斷 case "value" : //語句 break; //跳出判斷 default : //其他值 //語句 }
package code; public class Demo{ public static void main(String[] args) { String grade = "B"; switch(grade){ case "A" : System.out.println("等級為A:優秀"); case "B" : System.out.println("等級為B:良好"); // break; //不跳出,執行後續語句 case "C" : System.out.println("等級為C:不及格"); break; // 跳出,不執行後續語句 default : System.out.println("未定級"); } } }
編譯結果:
迴圈結構
while 迴圈
1> 滿足表示式,執行迴圈,直到不滿足
2> 不滿足表示式,則不進入迴圈
// 語法結構 while( 表示式 ) { //迴圈內容 }
package code; public class Demo{ public static void main(String[] args) { int a = 8; while (a<12){ System.out.println("a = " + a); a++; } } }
編譯結果:
do while 迴圈
1> 至少執行1次迴圈
2> 不滿足條件 則不執行迴圈,滿足條件再次執行迴圈
// 語法結構 do { //程式碼語句 }while(布林表示式);
package code; public class Demo{ public static void main(String[] args) { int a = 12; do{ System.out.println("a = " + a); a++; } while (a<12); } }
編譯結果:
for 迴圈
1> 初始化:可以宣告一種型別,但可初始化一個或多個迴圈控制變數,也可以是空語句
2> 表示式:表示式為真時執行迴圈體語句,否則執行後續語句
3> 更新:變數更新
// 語法結構 for(初始化; 布林表示式; 更新) { //程式碼語句 }
package code; public class Demo{ public static void main(String[] args) { for (int i = 5; i<10; i++){ System.out.println("i = " + i); } } }
編譯結果:
2> 變數初始化 for(;條件;步長) { //迴圈體 } 3> 變數初始化 for(;條件;) { //迴圈體 步長 } 4> 變數初始化 for(;;) { //步長 //自己判斷結束條件 if(i > 1000) break; }for迴圈的三種形態
陣列的增強型 for 迴圈
1> 宣告新的區域性變數,該變數的型別必須和陣列元素的型別匹配。其作用域限定在迴圈語句塊,其值與此時陣列元素的值相等。
2> 表示式是要訪問的陣列名,或者是返回值為陣列的方法
// 語法結構 for(宣告語句 : 表示式) { //程式碼句子 }
package code; public class Demo{ public static void main(String[] args) { int [] arr = {5, 6, 10, 100}; for (int a:arr){ System.out.println(a); } } }
編譯結果:
break
1> 跳出最裡層迴圈
2> 在迴圈語句或switch 語句中,用來跳出整個語句塊
package code; public class Demo{ public static void main(String[] args) { int [] arr = {5, 6, 10, 100}; for (int i=5; i<8; i++){ System.out.println("《《《《外層迴圈》》》》"); for (int a:arr) { System.out.println(a); if (a == 6) { System.out.println("跳出內層迴圈"); break; } } } } }
編譯結果:
continue
1> 在 for 迴圈中,continue 語句使程式立即跳轉到更新語句。
2> 在 while 或者 do…while 迴圈中,程式立即跳轉到布林表示式的判斷語句。
package code; public class Demo{ public static void main(String[] args) { int [] arr = {5, 6, 10, 100}; for (int i=5; i<8; i++){ if (i == 6){ continue; }else { System.out.println("《《《《外層迴圈》》》》 " + i); } for (int a:arr) { System.out.println(a); if (a == 6) { System.out.println(a + " = 6 跳出內層迴圈"); break; } } } } }
編譯結果: