Java 分支結構 - if...else/switch
順序結構只能順序執行,不能進行判斷和選擇,因此需要分支結構。
Java有兩種分支結構:
- if語句
- switch語句
if語句
一個if語句包含一個布爾表達式和一條或多條語句。
語法
If語句的用語法如下:
if(布爾表達式) { //如果布爾表達式為true將執行的語句 }
如果布爾表達式的值為true,則執行if語句中的代碼塊。否則執行If語句塊后面的代碼。
public class Test { public static void main(String args[]){ int x = 10; if( x < 20 ){ System.out.print("這是 if 語句"); } } }
以上代碼編譯運行結果如下:
這是 if 語句
if...else語句
if語句后面可以跟else語句,當if語句的布爾表達式值為false時,else語句塊會被執行。
語法
if…else的用法如下:
if(布爾表達式){ //如果布爾表達式的值為true }else{ //如果布爾表達式的值為false }
實例
public class Test { public static void main(String args[]){ int x = 30; if( x < 20 ){ System.out.print("這是 if 語句"); }else{ System.out.print("這是 else 語句"); } } }
以上代碼編譯運行結果如下:
這是 else 語句
if...else if...else語句
if語句后面可以跟else if…else語句,這種語句可以檢測到多種可能的情況。
使用if,else if,else語句的時候,需要注意下面幾點:
- if語句至多有1個else語句,else語句在所有的else if語句之后。
- If語句可以有若干個else if語句,它們必須在else語句之前。
- 一旦其中一個else if語句檢測為true,其他的else if以及else語句都將跳過執行。
語法
if...else語法格式如下:
if(布爾表達式 1){ //如果布爾表達式 1的值為true執行代碼 }else if(布爾表達式 2){ //如果布爾表達式 2的值為true執行代碼 }else if(布爾表達式 3){ //如果布爾表達式 3的值為true執行代碼 }else { //如果以上布爾表達式都不為true執行代碼 }
實例
public class Test { public static void main(String args[]){ int x = 30; if( x == 10 ){ System.out.print("Value of X is 10"); }else if( x == 20 ){ System.out.print("Value of X is 20"); }else if( x == 30 ){ System.out.print("Value of X is 30"); }else{ System.out.print("這是 else 語句"); } } }
以上代碼編譯運行結果如下:
Value of X is 30
嵌套的if…else語句
使用嵌套的if-else語句是合法的。也就是說你可以在另一個if或者else if語句中使用if或者else if語句。
語法
嵌套的if…else語法格式如下:
if(布爾表達式 1){ ////如果布爾表達式 1的值為true執行代碼 if(布爾表達式 2){ ////如果布爾表達式 2的值為true執行代碼 } }
你可以像 if 語句一樣嵌套 else if...else。
實例
public class Test { public static void main(String args[]){ int x = 30; int y = 10; if( x == 30 ){ if( y == 10 ){ System.out.print("X = 30 and Y = 10"); } } } }
以上代碼編譯運行結果如下:
X = 30 and Y = 10
switch語句
switch語句判斷一個變量與一系列值中某個值是否相等,每個值稱為一個分支。
語法
switch語法格式如下:
switch(expression){ case value : //語句 break; //可選 case value : //語句 break; //可選 //你可以有任意數量的case語句 default : //可選 //語句 }
switch語句有如下規則:
- switch語句中的變量類型只能為byte、short、int或者char。
- switch語句可以擁有多個case語句。每個case后面跟一個要比較的值和冒號。
- case語句中的值的數據類型必須與變量的數據類型相同,而且只能是常量或者字面常量。
- 當變量的值與case語句的值相等時,那么case語句之后的語句開始執行,直到break語句出現才會跳出switch語句。
- 當遇到break語句時,switch語句終止。程序跳轉到switch語句后面的語句執行。case語句不必須要包含break語句。如果沒有break語句出現,程序會繼續執行下一條case語句,直到出現break語句。
- switch語句可以包含一個default分支,該分支必須是switch語句的最后一個分支。default在沒有case語句的值和變量值相等的時候執行。default分支不需要break語句。
實例
public class Test { public static void main(String args[]){ //char grade = args[0].charAt(0); char grade = 'C'; switch(grade) { case 'A' : System.out.println("優秀"); break; case 'B' : case 'C' : System.out.println("良好"); break; case 'D' : System.out.println("及格"); case 'F' : System.out.println("你需要繼續努力"); break; default : System.out.println("無效等級"); } System.out.println("你的等級是 " + grade); } }
以上代碼編譯運行結果如下:
良好 你的等級是 C