1. 程式人生 > 實用技巧 >Java流程控制--分支結構

Java流程控制--分支結構

Java流程控制--分支結構--if

單分支

  • 結構:
if(條件表示式,這個表示式的結果是布林值:要麼是false,要麼是true){
    //如果上面()中的表示式返回結果是true,那麼執行{}中程式碼
    //如果上面()中的表示式返回結果是false ,那麼不執行{}中程式碼
    //PS:{}中的程式碼是否執行,取決於()中表達式的返回結果
}
  • 單分支之間,每一個選擇是獨立的,依次判斷執行的
  • if後面的()中的條件,要按照自己需求儘量完善
  • {}可以省略不寫,但是一旦省略,這個if就只負責後面的一句話,所以我們不建議初學者省略
public class TestIf01{
	public static void main(String[] args){
		// 實現功能:根據所得分數,判斷獲得的獎項
		int num1 = 6;
		int num2 = 6;
		int num3 = 6;
		
		// 對分數進行求和
		int sum = 0;
		sum += num1;
		sum += num2;
		sum += num3;
		
		// 判斷獲得的獎項
		if(sum>=14){
			System.out.println("恭喜獲得一等獎,lucky guy");
		}
		if(sum>=10&&sum<14){
			System.out.println("恭喜獲得二等獎,good");
		}
		if(sum>=6&&sum<10){
			System.out.println("恭喜獲得三等獎,just ok");
		}
		if(sum<6){
			System.out.println("真糟糕,你獲得的是安慰獎,bad luck");
		}
		
	}
}

多分支-if--else

  • 結構
if(布林表示式1) {
        語句塊1;
} else if(布林表示式2) {
        語句塊2;
}……
else if(布林表示式n){
        語句塊n;
} else {
        語句塊n+1;
}
  • 當布林表示式1為真時,執行語句塊1;否則,判斷布林表示式2,當布林表示式2為真時,執行語句塊2;否則,繼續判斷布林表示式3······;如果1~n個布林表示式均判定為假時,則執行語句塊n+1,也就是else部分
  • 多分支:好處:只要滿足一個 分支以後,後面的分支就不需要判斷了 --》效率高
import java.util.Scanner;
public class TestIf05{
	public static void main(String[] args){
		/*
		小朋友搬桌子:
		年齡大於7歲,可以搬桌子;
		如果年齡大於5歲,性別是男,可以搬桌子;
		否則不可以搬動桌子,提示:你還太小了
		*/
		Scanner sc = new Scanner(System.in);
		System.out.print("請輸入小朋友的年齡");
		if(sc.hasNextInt()){
			int age = sc.nextInt();
			if(age>=7){
				System.out.println("小朋友已經可以搬桌子了");
			}else if(age>=5){
				System.out.print("小朋友的年齡不到7歲,小朋友的性別是?1、男孩 2、女孩");
				if(sc.hasNextInt()){
					int gender = sc.nextInt();
					if(gender == 1){
						System.out.println("雖然小朋友年齡不到7歲,但是男孩子可以搬桌子");
					}else{
						System.out.println("小女孩還太小了,不適合搬桌子");
					}
				}else{
					System.out.println("您的輸入有誤");
				}
			}else{
				System.out.println("小朋友太小了,不適合搬桌子");
			}
		}else{
			System.out.println("請輸入正確的年齡");
		}
	}
}

Java流程控制--分支結構--switch

  • 語法結構
switch(){
                        case * :
                        case * :
                        .......
                }
  • switch後面是一個(),()中表達式返回的結果是一個等值,這個等值的型別可以為:int,byte,short,char,String,列舉型別
  • 這個()中的等值會依次跟case後面的值進行比較,如果匹配成功,就執行:後面的程式碼
  • 為了防止程式碼的“穿透”效果:在每個分支後面加上一個關鍵詞break,遇到break這個分支就結束了
  • 類似else的“兜底”“備胎”的分支:default分支
  • default分支可以寫在任意的位置上,但是如果沒有在最後一行,後面必須加上break關鍵字,如果在最後一行的話,break可以省略
  • 相鄰分支邏輯是一樣的,那麼就可以只保留最後一個分支,上面的都可以省去不寫了
  • switch分支和if分支區別:
    • 表示式是等值判斷的話--》if ,switch都可以
    • 如果表示式是區間判斷的情況---》if最好
  • switch應用場合:就是等值判斷,等值的情況比較少的情況下
public class TestSwitch{
	public static void main(String[] args){
		/*
		實現一個功能:
		根據給出的學生分數,判斷學生的等級:
		>=90  -----A
		>=80  -----B
		>=70  -----C
		>=60  -----D
		<60   -----E
		*/
		int score = (int)(Math.random()*100)+1;
		System.out.println("學生成績:"+score+"分");
		switch(score/10){
			case 10 :
			case 9 :
				System.out.println("A等");
				break;
			case 8 :
				System.out.println("B等");
				break;
			case 7 :
				System.out.println("C等");
				break;
			case 6 :
				System.out.println("D等");
				break;
			case 5 :
			case 4 :
			case 3 :
			case 2 :
			case 1 :
			case 0 :
				System.out.println("E等");
				break;
			default:
				System.out.println("成績錯誤");
		}
	}
}