1. 程式人生 > >第1章選擇流程控制語句

第1章選擇流程控制語句

4.3 進行 println 部分 int 考試 個數 stat images

1.1順序結構的基本使用
1.1.1順序結構概述
是程序中最簡單最基本的流程控制,沒有特定的語法結構,按照代碼的先後順序,依次執行,程序中大多數的代碼都是這樣執行的
1.1.2順序流程流程圖
技術分享圖片
1.1.3代碼案例一

package com.itheima_01;

/*
 * 順序結構:從上往下,依次執行
 */
public class OrderDemo {
    public static void main(String[] args) {
        System.out.println("開始");
        System.out.println("語句A");
        System.out.println("語句B");
        System.out.println("語句C");
        System.out.println("結束");
    }
}

1.2If語句的格式
1.2.1If語句格式1及執行流程
if語句第一種格式:
if(關系表達式) {
語句體
}
執行流程:
首先判斷關系表達式看其結果是true還是false
如果是true就執行語句體
如果是false就不執行語句體
1.2.2if語句格式1執行流程圖
技術分享圖片
1.2.3代碼案例二

package com.itheima_02;
/*
 * if語句有三種格式。
 * 
 * if語句格式1:
 *      if(關系表達式) {
 *          語句體;
 *      }
 * 
 * 執行流程:
 *      A:首先判斷關系表達式看其結果是true還是false
 *      B:如果是true,就執行語句體
 *      C:如果是false,就不執行語句體
 */
public class IfDemo {
    public static void main(String[] args) {
        System.out.println("開始");
        // 定義兩個變量
        int a = 10;
        int b = 20;

        if (a == b) {
            System.out.println("a等於b");
        }

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

        System.out.println("結束");
    }
}

1.2.4If語句格式2及執行流程
if語句第二種格式:
if(關系表達式) {
語句體1;
} else {
語句體2;
}
執行流程
首先判斷關系表達式看其結果是true還是false
如果是true就執行語句體1
如果是false就執行語句體2
1.2.5if語句格式2執行流程圖
技術分享圖片
1.2.6代碼案例三

package com.itheima_02;
/*
 * if語句格式2:
 *      if(關系表達式) {
 *          語句體1;
 *      }else {
 *          語句體2;
 *      }
 * 
 * 執行流程:
 *      A:判斷關系表達式的值是true還是false
 *      B:如果是true,就執行語句體1
 *      C:如果是false,就執行語句體2
 */
public class IfDemo2 {
    public static void main(String[] args) {
        System.out.println("開始");
        // 判斷給定的數據是奇數還是偶數
        // 定義變量
        int a = 100;
        // 給a重新賦值
        a = 99;

        if (a % 2 == 0) {
            System.out.println("a是偶數");
        } else {
            System.out.println("a是奇數");
        }

        System.out.println("結束");
    }
}

1.2.7If語句格式3及執行流程

if語句第三種格式:
if(關系表達式1) {
語句體1;
}else if (關系表達式2) {
語句體2;
}

else {
語句體n+1;
}
執行流程
首先判斷關系表達式1看其結果是true還是false
如果是true就執行語句體1
如果是false就繼續判斷關系表達式2看其結果是true還是false
如果是true就執行語句體2
如果是false就繼續判斷關系表達式…看其結果是true還是false

如果沒有任何關系表達式為true,就執行語句體n+1
1.2.8if語句格式3執行流程圖
技術分享圖片
1.2.9代碼案例四

package com.itheima_02;

/*
 * if語句格式3:
 *      if(關系表達式1) {
 *          語句體1;
 *      }else if(關系表達式2) {
 *          語句體2;
 *      }else if(關系表達式3) {
 *          語句體3;
 *      }
 *      ...
 *      else {
 *          語句體n+1;
 *      }
 * 
 * 執行流程:
 *      A:首先判斷關系表達式1看其結果是true還是false
 *      B:如果是true,就執行語句體1
 *           如果是false,就繼續進行關系表達式2的判斷看其結果是true還是false
 *      C:如果是true,就執行語句體2
 *         如果是false,就繼續進行關系表達式...的判斷看其結果是true還是false
 *      ...
 *      D:如果沒有一個為true的,就執行語句體n+1
 * 
 * if語句的三種格式:
 *      第一種格式適合做一種情況的判斷
 *      第二種格式適合做二種情況的判斷
 *      第三種格式適合做多種情況的判斷
 */
public class IfDemo3 {
    public static void main(String[] args) {
        // x和y的關系滿足如下:
        // x>=3 y = 2x + 1;
        // -1<=x<3 y = 2x;
        // x<=-1 y = 2x – 1;
        // 根據給定的x的值,計算出y的值並輸出。

        // 定義變量
        int x = 5;

        /*
        int y;
        if (x >= 3) {
            y = 2 * x + 1;
        } else if (x >= -1 && x < 3) {
            y = 2 * x;
        } else if (x <= -1) {
            y = 2 * x - 1;
        }else {
            y = 0;
        }
        */

        int y = 0;
        if (x >= 3) {
            y = 2 * x + 1;
        } else if (x >= -1 && x < 3) {
            y = 2 * x;
        } else if (x <= -1) {
            y = 2 * x - 1;
        }

        System.out.println("y的值是:"+y);
    }
}

1.3If語句的練習
1.3.1if語句實現獲取兩個數據較大值
1.3.2代碼案例五

package com.itheima_02;

import java.util.Scanner;

/*
 * 鍵盤錄入兩個數據,獲取這兩個數據的較大值
 * 
 * 分析:
 *      A:看到鍵盤錄入,我們就應該想到鍵盤錄入的三步驟
 *          導包,創建對象,接收數據
 *      B:獲取這兩個數據的較大值,其實就是判斷兩個數據誰大,把大的輸出就可以了。
 * 
 * 導包:
 *      A:手動導包
 *          import java.util.Scanner;
 *      B:鼠標點擊紅色叉叉,自動生成
 *      C:快捷鍵(推薦)
 *          ctrl+shift+o
 */
public class IfTest {
    public static void main(String[] args) {
        //創建對象
        Scanner sc = new Scanner(System.in);

        //接收數據
        System.out.println("請輸入第一個數據:");
        int a = sc.nextInt();

        System.out.println("請輸入第二個數據:");
        int b = sc.nextInt();

        //采用if語句格式2實現
        /*
        if(a>b){
            System.out.println("較大的值是:"+a);
        }else {
            System.out.println("較大的值是:"+b);
        }
        */

        //拿到較大的值之後,我未必想直接輸出,所以我們定義變量接收這個較大的值
        int max;
        if(a>b){
            max = a;
        }else {
            max = b;
        }
        //可能做其他的操作
        //max += 100;
        System.out.println("較大的值是:"+max);
    }
}

1.3.3if語句實現判斷學生等級
1.3.4代碼案例六

package com.itheima_02;

import java.util.Scanner;

/*
 * 鍵盤錄入學生考試成績,請根據成績判斷該學生屬於哪個級別
 * 90-100   優秀
 * 80-90    好
 * 70-80    良
 * 60-70    及格
 * 60以下 不及格
 * 
 * 分析:
 *      A:鍵盤錄入學生考試成績
 *          三步驟
 *      B:通過簡單的分析,我們決定采用if語句格式3來實現
 * 
 * 程序一定要考慮周全了。
 *      安全數據
 *      邊界數據
 *      錯誤數據
 */
public class IfTest2 {
    public static void main(String[] args) {
        //創建對象
        Scanner sc = new Scanner(System.in);

        //接收數據
        System.out.println("請輸入學生的考試成績:");
        int score = sc.nextInt();

        //if語句格式3
        /*
        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 {
            System.out.println("你的成績屬於不及格");
        }
        */

        //我們發現程序不夠健壯,加入錯誤數據的判斷
        if(score<0 || score>100){
            System.out.println("你的成績是錯誤的");
        }else 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 {
            System.out.println("你的成績屬於不及格");
        }
    }
}

1.4switch語句的格式及執行流程
1.4.1格式解釋:
switch表示這是switch語句
表達式的取值:byte,short,int,char
JDK5以後可以是枚舉
JDK7以後可以是String
case後面跟的是要和表達式進行比較的值
語句體部分可以是一條或多條語句
break表示中斷,結束的意思,可以結束switch語句
default語句表示所有情況都不匹配的時候,就執行該處的內容,和if語句的else相似。
1.4.2執行流程
首先計算出表達式的值
其次,和case依次比較,一旦有對應的值,就會執行相應的語句,在執行的過程中,遇到break就會結束。
最後,如果所有的case都和表達式的值不匹配,就會執行default語句體部分,然後程序結束掉。
1.4.3switch語句執行流程圖
技術分享圖片
1.5switch語句的練習
1.5.1switch語句實現根據數字輸出對應星期
1.5.2代碼案例七

package com.itheima_03;

import java.util.Scanner;

/*
 * switch語句格式:
 * switch(表達式) {
 *      case 值1:
 *          語句體1;
 *          break;
 *      case 值2:
 *          語句體2;
 *          break;
 *      ...
 *      default:
 *          語句體n+1;
 *          break;
 * }
 * 格式解釋:
 *      表達式:byte,short,int,char
 *          JDK5以後可以是枚舉
 *          JDK7以後可以是字符串
 *      case:就是要和表達式進行比較的值
 *      break:表示中斷,結束的意思。
 *      default:表示所有的情況都不匹配的時候,就執行語句體n+1。和if語句的else相似。
 * 執行流程:
 *      A:計算出表達式的值
 *      B:拿計算出來的值和case後面的值依次比較,一旦有對應的值,就執行該處的語句,在執行過程中,遇到 break,就結束。
 *      C:如果所有的case都不匹配,就會執行default控制的語句,然後結束。
 * 需求:
 *      根據鍵盤錄入的數值1,2,3,…7輸出對應的星期一,星期二,星期三…星期日。
 */
public class SwitchDemo {
    public static void main(String[] args) {
        //創建鍵盤錄入對象
        Scanner sc = new Scanner(System.in);

        //接收數據
        System.out.println("請輸入一個數字(1-7):");
        int weekday = sc.nextInt();

        //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;
        }
    }
}

第1章選擇流程控制語句