java基礎筆記 -- 6.選擇結構-if語句-switch語句

一杯白開水8888發表於2020-10-09

一、流程控制

1.1 概述:

在一個程式執行的過程中,各條語句的執行順序對程式的結果是有直接影響的。也就是說,程式的流程對執行結果
有直接的影響。所以,我們必須清楚每條語句的執行流程。而且,很多時候我們要通過控制語句的執行順序來實現
我們要完成的功能。

1.2 順序結構

public static void main(String[] args){
    //順序執行,根據編寫的順序,從上到下執行
    System.out.println(1);
    System.out.println(2);
    System.out.println(3);
}

二、判斷語句

2.1 判斷語句 -- if

if (關係表示式) {

     語句體;

}

執行流程:

* 首先判斷關係表示式看其結果是true還是false.

* 如果是true就執行語句體

* 如果是false就不執行語句體

public static void main(String[] args) {
        System.out.println("開始");

        // 定義兩個變數
        int a = 10;
        int b = 20;
        // 變數使用if判斷
        if (a == b) {
            System.out.println("a等於b");
        }

        int c = 10;
        if (a == c) {
          System.out.println("a等於c");
        }
        System.out.println("結束");
    }

2.2 判斷語句 if...else

if(關係表示式) {

    語句體A;

}else {

    語句體B;

}

執行流程:

* 首先判斷關係表示式看其結果true還是false

* 如果是true就執行語句體A

* 如果是false就執行語句體B

public static void main(String[] args) {
        // 判斷給定的資料是奇數還是偶數
        // 定義變數 
        int a = 1;
        if (a % 2 == 0){
            System.out.println("a是偶數");
        } else {
            System.out.println("a是奇數");
        }
        System.out.println("結束");
    }

2.3 判斷語句 if...else if...else

if語句第三種格式: if...else if...else

if (判斷條件1) {
   執行語句1;  
} else if (判斷條件2) {
   執行語句2;  
}
...
}else if (判斷條件n) {
  執行語句n;   
} else {
   執行語句n+1; 

}

執行流程

* 首先判斷關係表示式1看其結果是true還是false

* 如果是true就執行語句體1

* 如果是false就繼續判斷關係表示式2看其結果是true還是false.

* 如果是true就執行語句體2

* 如果是false就繼續判斷關係表示式...看其結果是true還是false

* ...

* 如果沒有任何關係表示式為true,就執行語句體n+1

練習:

指定考試成績,判斷學生等級
90-100 優秀
80-89 好
70-79 良
60-69 及格
60 以下 不及格

public static void main(String[] args) {
		int score = 120;
		if (score >= 90 && score <= 100) {
			System.out.println("優秀");
		} else if (score >= 80 && score < 90) {
			System.out.println("好");
		} else if (score >= 70 && score < 80) {
			System.out.println("良");
		} else if (score >= 60 && score < 70) {
			System.out.println("及格");
		} else if (score >= 0 && score < 60) {
			System.out.println("不及格");
		} else { // 單獨處理邊界之外的不合理情況
			System.out.println("資料錯誤");
		}
	}

2.4 if語句和三元運算子的互換

在某些簡單的應用中,if語句是可以和三元運算子互換使用的。

public static void main(String[] args) {
    int a = 10;
    int b = 20;
    //定義變數,儲存a和b的較大值
    int c;
    if(a > b) {
       c = a;  
    } else {
       c = b;  
    }
    //可以上述功能改寫為三元運算子形式
    c = a > b ? a:b;
}

三、選擇語句

3.1 選擇語句--switch

* switch語句格式:

switch(表示式) {

  case 常量值:

     語句體1;

     break;

case 常量值:

     語句體2;

     break;

 ...

 default:

    語句體n+1;

     break;

}

執行流程:

* 首先計算出表示式的值

* 其次,和case依次比較,一旦有對應的值,就會執行相應的語句,在執行的過程中,遇到break就會結束。

* 最後,如果所有的case都和表示式的值不匹配,就會執行default語句體部分,然後程式結束掉。

public static void main(String[] args) {
        // 定義變數,判斷是星期幾
        int weekday = 6;
        // switch語句實現選擇
        switch (weekday) {
            case 1:
                System.out.println("星期一");
                break;
            case 2:
                System.out.println("星期二");
                break;
            case 3:
                System.out.println("星期三");
                break;
            case 4:
                System.out.println("星期四");
                break;
            case 5:
                System.out.println("星期五");
                break;
            case 6:
                System.out.println("星期六");
                break;
            case 7:
                System.out.println("星期七");
                break;

                default:
                    System.out.println("你輸入的數字有誤");
                break;
        }
    }

switch 語句中,表示式的資料型別,可以是byte,short,int,char,enum(列舉),JDK7後可以接收字串。

3.2 case的穿透性

在switch語句中,如果case的後面不寫break,將出現空透現象,也就是不會在判斷下一個case的值,直接向後執行,直到遇到break,或者整體switch結束。

public static void main(String[] args) {
  int i = 5;
  switch (i){
    case 0:
      System.out.println("執行case0");
      break;
    case 5:
      System.out.println("執行case5");
    case 10:
      System.out.println("執行case10");
    default:
      System.out.println("執行default");
  }

上述程式中,執行case5後,由於沒有break語句,程式會一直向後走,不會在判斷case,也不會理會break,直接
執行完整體switch。
由於case存在穿透性,因此初學者在編寫switch語句時,必須要寫上break。

相關文章