1. 程式人生 > 其它 >Java流程控制:選擇結構

Java流程控制:選擇結構

選擇結構

if 單選擇結構

  • 很多時候我們需要去判斷一個東西是否可行,然後才去執行,這樣的過程在程式中用 if 語句來表示

  • 語法:

    if (布林表示式) {
        //如果布林表示式為true,則執行的語句體
        執行我要上天操作;
    }
    
  • 示例:

    package com.wanggenji.struct;
    
    import java.util.Scanner;
    
    public class IfDemo01 {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
    
            System.out.println("請輸入內容:");
            String s = scanner.nextLine();
    
            //equals:判斷字串是否相等
            if (s.equals("Hello")) {
                System.out.println(s);
            }
    
            System.out.println("End");
            scanner.close();
        }
    }
    

if 雙選擇結構

  • 如果條件滿足,我們走方案一;如果條件不滿足,我們走方案二

  • 語法:

    if (布林表示式) {
        //如果布林表示式為true,則執行的語句體
    }else{
        //如果布林表示式為false,則執行的語句體
    }
    
  • 示例:

    package com.wanggenji.struct;
    
    import java.util.Scanner;
    
    public class IfDemo02 {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
    
            System.out.println("請輸入成績:");
            int score = scanner.nextInt();
    
            if (score>60){
                System.out.println("及格");
            }else{
                System.out.println("不及格");
            }
            scanner.close();
        }
    }
    

if 多選擇結構

  • 有很多種選擇,滿足某一個條件就執行某一種選擇。

  • 語句至多有1個 else 語句,else 語句在所有的 else if 語句之後。

  • if 語句可以有若干個 else if 語句,他們必須在 else 語句之前。

  • 只要其中一個 if 語句檢測為 true ,其他 if 跳過以及 else 語句都將跳過執行。

  • 語句:

    if (布林表示式1) {
        //如果布林表示式1為true,則執行的語句體
    }else if (布林表示式2){
        //如果布林表示式2為true,則執行的語句體
    }else if (布林表示式3){
        //如果布林表示式3為true,則執行的語句體
    }else if (布林表示式4){
        //如果布林表示式4為true,則執行的語句體
    }else{
        //如果以上都不執行,則執行的語句體
    
  • 示例:

    package com.wanggenji.struct;
    
    import java.util.Scanner;
    
    public class IfDemo03 {
        public static void main(String[] args) {
            //成績評級
            Scanner scanner = new Scanner(System.in);
            System.out.println("請輸入成績:");
    
            int score = scanner.nextInt();
    
            if (score==100){
                System.out.println("滿分");
            }else if (score>=90 && score<100){
                System.out.println("A級");
            }else if (score>=80 && score<90){
                System.out.println("B級");
            }else if (score>=70 && score<80){
                System.out.println("C級");
            }else if (score>=60 && score<70){
                System.out.println("D級");
            }else if (score>=0 && score<60){
                System.out.println("不及格");
            }else{
                System.out.println("成績不合法");
            }
    
            scanner.close();
        }
    }
    

巢狀的if語句

  • 使用巢狀的 if ... else 語句是合法的。你可以在另一個 if 或者 else if 語句中使用 if 或 else if 語句。你可以想 if 語句一樣巢狀 else if ... else。

  • 語法:

    if (布林表示式1){
        //如果布林表示式1為true,則執行語句
        if (布林表示式2){
            //如果布林表示式1和布林表示式2都為true,則執行程式碼
        }
    }
    

switch多選擇結構

  • 多選擇結構還有一個實現方法,switch case 語句。

  • switch case 語句判斷一個變數與一系列值中某個值是否相等,每個值稱為分支。

  • switch 語句中的變數型別可以是:

    • byte、short、int 或者 char。
    • 從 Java Se 7開始
    • switch 支援字串型別了
    • 同時 case 標籤必須為字串常量 或 字面量。
  • 語法:

    switch (expression){
        case value:
            //語句
            break;//可選
        case value:
            //語句
            break;//可選
        case value:
            //語句
            break;//可選
        //你可以有任一數量的case語句
        default://可選
            //語句
    }
    
  • case 穿透 switch 匹配一個具體的值

  • 要注意寫 break ,不然就會出現 case 穿透,匹配的 case 執行完後下面的 case 還在執行。

    char grade = 'c'; 
    
    switch (grade){
        case 'A':
            System.out.println("優秀");
            break;
        case 'B':
            System.out.println("良好");
            break;
        case 'C':
            System.out.println("中等");
            break;
        case 'D':
            System.out.println("及格");
            break;
        case 'E':
            System.out.println("再接再厲");
            break;
        default:
            System.out.println("未知等級");
    
  • JDK 7 以後的版本 switch 支援字串型別

    //case穿透 ,switch匹配一個具體的值
    //JDK7的新特性,表示式結果可以使字串
    //字串的本質還是數字,雜湊code
     String name = "ak";
    
    switch (name){
        case "張三":
            System.out.println("就是我張三了");
            break;
        case "李四":
            System.out.println("就是我李四了");
            break;
        case "王五":
            System.out.println("就是我王五了");
            break;
        default:
            System.out.println("弄啥嘞!小老弟");
    
  • 字串的比較是生成一串雜湊值來比較。。。?每一個物件都會對應一個hashcode。

  • IDEA 反編譯,在 Project Struct ——Project——最底下是輸出class檔案的資料夾 ——進入資料夾把 class 檔案複製進入java資料夾下開啟就行了。

  • 反編譯可以看到執行的原始碼,通過反編譯可以學習到優秀的方法思想。

  • 養成看原始碼的習慣。