一、本單元知識點概述

二、本單元目標

(Ⅰ)重點知識目標

1.if語句的格式及執行流程
2.switch語句的格式及執行流程

(Ⅱ)能力目標

1.掌握if語句的格式及執行流程
2.掌握switch語句的格式及執行流程
3.瞭解case的穿透性

三、本單元知識詳講

4.1 流程控制

在一個程式執行的過程中,各條語句的執行順序對程式的結果是有直接影響的。也就是說,程式的流程對執行結果

有直接的影響。所以,我們必須清楚每條語句的執行流程。而且,很多時候我們要通過控制語句的執行順序來實現

我們要完成的功能。

4.1.1 順序結構的概述★★★

根據程式碼編寫的順序,從上到下執行。

4.1.2 順序結構的執行順序★★★

案例演示:

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

4.2 判斷語句

4.2.1 if語句的格式★★

if語句第一種格式:

1 if(關係表示式){
2 語句體;
3 }

4.2.2 if語句的執行流程★★★

執行流程

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

如果是true就執行語句體

如果是false就不執行語句體

案例演示:

 1 public static void main(String[] args){
2 System.out.println("開始");
3 // 定義兩個變數
4 int a = 10;
5 int b = 20;
6 //變數使用if判斷
7 if (a == b){
8 System.out.println("a等於b");
9 }
10 int c = 10;
11 if(a == c){
12 System.out.println("a等於c");
13 }
14 System.out.println("結束");
15 }

4.2.3 if...else語句的格式★★

if語句第二種格式:

1 if(關係表示式) {
2 語句體1;
3 }else {
4 語句體2;
5 }

4.2.4 if...else語句的執行流程★★★★

執行流程

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

如果是true就執行語句體1

如果是false就執行語句體2

案例演示:

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

4.2.5 if..else if...else語句的格式★★

if語句第三種格式:

 1 if (判斷條件1) {
2 執行語句1;
3 } else if (判斷條件2) {
4 執行語句2;
5 }
6 ...
7 else if (判斷條件n) {
8 執行語句n;
9 } else {
10 執行語句n+1;
11 }

4.2.6 if..else if...else語句的執行流程★★★

執行流程

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

如果是true就執行語句體1

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

如果是true就執行語句體2

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

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

案例演示:

 1 public static void main(String[] args) {
2 // x和y的關係滿足如下:
3 // x>=3 y = 2x + 1;
4 //‐1<=x<3 y = 2x;
5 // x<=‐1 y = 2x – 1;
6 // 根據給定的x的值,計算出y的值並輸出。
7 // 定義變數
8 int x = 5;
9 int y;
10 if (x>= 3) {
11 y = 2 * x + 1;
12 } else if (x >= ‐1 && x < 3) {
13 y = 2 * x;
14 } else {
15 y = 2 * x ‐ 1;
16 }
17 System.out.println("y的值是:"+y); }

4.2.7 判斷語句案例★★★

指定考試成績,判斷學生等級

90-100 優秀

80-89 好

70-79 良

60-69 及格

60以下 不及格

4.2.8 程式碼演示★★★

 1 public static void main(String[] args) {
2 int score = 100;
3 if(score<0 || score>100){
4 System.out.println("你的成績是錯誤的");
5 }else if(score>=90 && score<=100){
6 System.out.println("你的成績屬於優秀");
7 }else if(score>=80 && score<90){
8 System.out.println("你的成績屬於好");
9 }else if(score>=70 && score<80){
10 System.out.println("你的成績屬於良");
11 }else if(score>=60 && score<70){
12 System.out.println("你的成績屬於及格");
13 }else { System.out.println("你的成績屬於不及格");
14 }
15 }

4.3 選擇語句

4.3.1 switch語句格式★★

switch語句格式:

switch(表示式) {
    case 常量值1:
            語句體1;
            break;
    case 常量值2:
            語句體2;
            break;
        ...
    default:
            語句體n+1;
            break;
    }

4.3.2 switch執行流程★★★★

執行流程

首先計算出表示式的值

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

束。

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

案例演示:

 1 public static void main(String[] args) {
2 //定義變數,判斷是星期幾
3 int weekday = 6;
4 //switch語句實現選擇
5 switch(weekday) {
6 case 1:
7 System.out.println("星期一");
8 break;
9 case 2:
10 System.out.println("星期二");
11 break;
12 case 3:
13 System.out.println("星期三");
14 break;
15 case 4:
16 System.out.println("星期四");
17 break;
18 case 5:
19 System.out.println("星期五");
20 break;
21 case 6:
22 System.out.println("星期六");
23 break;
24 case 7:
25 System.out.println("星期日");
26 break;
27 default:
28 System.out.println("你輸入的數字有誤");
29 break;
30 }

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

4.3.3 case的穿透性★★★★

在switch語句中,如果case的後面不寫break,將出現穿透現象,也就是不會在判斷下一個case的值,直接向後運

行,直到遇到break,或者整體switch結束。

 1 public static void main(String[] args) {
2 int i = 5;
3 switch (i){
4 case 0:
5 System.out.println("執行case0");
6 break;
7 case 5:
8 System.out.println("執行case5");
9 case 10:
10 System.out.println("執行case10");
11 default:
12 System.out.println("執行default");
13 }

上述程式中,執行case5後,由於沒有break語句,程式會一直向後走,不會在判斷case,也不會理會break,直接

執行完整體switch。

由於case存在穿透性,因此初學者在編寫switch語句時,必須要寫上break。

四、本單元知識總結

1. if語句的格式及執行流程。
2. switch語句的格式及執行流程。