1. 程式人生 > 實用技巧 >分支結構(if/else,switch選擇判斷)

分支結構(if/else,switch選擇判斷)

分支結構

Note:switch中支援的型別為byte,short,int,char,String(JDK7+),列舉共6種,不支援浮點型

1.if結構

if:如果

格式:

if(布林表示式){

//條件成立邏輯程式碼塊

}

import java.util.Scanner;
public class Test5{
    public static void main(String [] args){
        // 趙四兩門成績  java成績  音樂成績
        // 如果java成績大於85 並且 音樂成績 大於75  獎勵蘋果8袋
        // 或者
        // 如果java成績等於100 並且 音樂成績 大於 65 獎勵蘋果8袋
Scanner input = new Scanner(System.in); System.out.println("請輸入你的java成績"); int javaScore = input.nextInt(); System.out.println("請輸入你的音樂成績"); int musicScore = input.nextInt(); if((javaScore > 85 && musicScore > 75) || (javaScore == 100 && musicScore > 65)){ System.out.println(
"獎勵蘋果8袋"); } // 在程式結束之前 判斷當前是否獲得獎勵 System.out.println("程式結束"); } }

2.if - else

else : 否則

要求:else不能單獨出現,必須結合if或者其他的選擇結構

格式:

if(布林表示式){

//條件成立執行的邏輯程式碼

}else{

//以上條件不成立的其他任何情況都會執行的程式碼

}

package com.qfedu.test1;
​
import java.util.Scanner;
​
public class Test2 {
    public
static void main(String[] args) { // if -else // else:否則 不能單獨出現 必須結合 if 或者其他的選擇結構 // 單行註釋快捷鍵 選中需要被註釋的程式碼 ctrl + / 取消註釋 也是一樣的操作 // ctrl + d刪除選中內容 // if(布林型別的表示式) { // // }else { // // } Scanner input = new Scanner(System.in); System.out.println("請輸入你的java成績"); int javaScore = input.nextInt(); System.out.println("請輸入你的音樂成績"); int musicScore = input.nextInt(); if((javaScore == 100 && musicScore > 65) || (javaScore >= 85 && musicScore >= 75)) { System.out.println("獎勵蘋果8袋"); }else { System.out.println("繼續努力"); } } }

3.多重if

適用場景:多重if用於處理某個值處於某個連續的區間的情況

else - if不能單獨出現,必須結合if

多重if中的else - if沒有上限,寫多少都可以

多重if中的else可寫可不寫,根據需求是否書寫

package com.qfedu.test1;
​
import java.util.Scanner;
​
public class Test4 {
    public static void main(String[] args) {
        // 根據成績評定等級
        // >= 90 優秀
        // >= 80 良好
        // >= 70 中等
        // >= 60 及格
        // < 60 差
        // 以上需求我們可以使用多重if來實現
        // 多重if通常用於處理某個值處於某個連續的區間的情況 
        // 多重if編寫條件必須是有順序的  升序 或者  降序
        Scanner input = new Scanner(System.in);
        System.out.println("請輸入你的成績");
        int score = input.nextInt();
        
        if(score >= 90) {
            System.out.println("優秀");
        }else if(score >= 80) {
            System.out.println("良好");
        }else if(score >= 70) {
            System.out.println("中等");
        }else if(score >= 60) {
            System.out.println("及格");
        }else {
            System.out.println("繼續努力");
        }   
    }
}

4.巢狀if

概念:if選擇結構中繼續巢狀if選擇結構,if、if - else、多重if之間可以互相巢狀,沒有上限

適用場景:通常用於處理某些關聯關係的條件情況,例如先符合條件A,才有機會符合條件B

package com.qfedu.test1;
​
import java.util.Scanner;
​
public class Test6 {
    public static void main(String[] args) {
        // 舉行百米跑步比賽 跑步時間小於 10 秒的話 進入決賽 
        // 根據性別分別進入 男子組 或者 女子組
        // 需求改進
        // 為了公平比賽 男生 要求10秒可以進入決賽 女生12秒可以進入決賽
        Scanner input = new Scanner(System.in);
        System.out.println("請輸入你的跑步時間");
        double time = input.nextDouble();
        System.out.println("請輸入你的性別");
        String sex = input.next();
        //      if(time < 10) {
        //          // 男生
        //          if(sex.equals("男")) {
        //              System.out.println("恭喜你進入男子組");
        //          }
        //      }else if(time < 12) {
        //          if(sex.equals("女")) {
        //              System.out.println("恭喜你進入女子組");
        //          }
        //      }
//      if((time < 10 && sex.equals("男"))) {
//          System.out.println("恭喜進入男子組");
//          
//      } else if (time < 12 && sex.equals("女")) {
//          System.out.println("恭喜進入女子組");
//      }
                
        if(sex.equals("男")) {
            if(time < 10) {
                System.out.println("恭喜進入男子組");
            }
        }else if(sex.equals("女")){
            if(time < 12) {
                // alt + 方向鍵 上下鍵
                System.out.println("恭喜進入女子組");
            }
        }
    }
}

5.switch結構

switch : 開關

case:情況

break:打破、折斷

default:預設

格式:

switch(變數|表示式){

case 值1:

邏輯程式碼1;

case 值2:

邏輯程式碼2;

case 值n:

邏輯程式碼n;

default:

未滿足時的邏輯程式碼; }

使用場景:switch通常用於處理等值的情況

型別要求:支援的資料型別:

byte,short,int,char,String(JDK7+),列舉

package com.qfedu.test1;
​
import java.util.Scanner;
​
public class Test7 {
    public static void main(String[] args) {
        // switch 
        // 支援的資料型別 byte short int char String(JDK7+) 列舉
        // 需求:學校舉行尬舞比賽 
        // 一等獎  夏令營1天
        // 二等獎  夏令營1天
        // 三等獎  夏令營1天
        // 四等獎 夏令營1天
​
        Scanner input = new Scanner(System.in);
        System.out.println("請輸入你的名次");
        int num = input.nextInt();
        //      if(num == 1) {
        //          System.out.println("夏令營1天");
        //      }else if (num == 2) {
        //          System.out.println("優盤1個");
        //      }else if(num == 3) {
        //          System.out.println("筆記本1個");
        //      }else if(num == 4){
        //          System.out.println("口頭表揚一次");
        //      }
//      switch(num) {
//      case 1:
//          System.out.println("夏令營1天");
//          break;
//      case 2:
//          System.out.println("優盤1個");
//          break;
//      case 3:
//          System.out.println("筆記本1個");
//          break;
//      case 4:
//          System.out.println("口頭表揚一次");
//          break;
//      }
//      
        switch(num) {
        case 1:
        case 2:
        case 3:
        case 4:
            System.out.println("夏令營1天");
            // break也不是必須存在的  根據需求是否書寫 不書寫的效果將一直執行到書寫break的case停止
            // case塊書寫上break  表示執行 完當前case塊程式碼跳出當前case塊
            break;
            // default不是必須存在的 根據需求
            // 位置也不是固定的 但是要求必須寫在最後
            // default也要加上break
        default:
            System.out.println("繼續努力");
            break;
        }
    }
}

6.區域性變數

概念:宣告在函式內部的變數

要求:

1.必須先賦值才能使用

2.定義位置:定義在方法體內部

3.多個變數,在重合的作用範圍內,不能出現重名(命名衝突)

4.作用範圍:在定義的程式碼塊以內可以訪問

5.存放的位置:區域性變數存在棧中

6.生命週期:隨著方法的入棧(壓棧)而生效,隨著方法的出棧(彈棧)而死亡

package com.qfedu.test1;
// int a = 20; 不能定義在類以外
public class Test9 {
    // int s = 20; 在這裡定義可以編譯通過 但是不是區域性變數(全域性變數)
    public static void main(String[] args) {
        int a;
        int b = 10;
        System.out.println(b);
        // System.out.println(a); 區域性變數 必須先賦值 才能使用
        if(b > 5) {
            int c = 20;
            System.out.println(c);
            // System.out.println(d); 不能訪問d 因為超出範圍 並且 d在後續的程式碼中定義  不能提前訪問
            if(b > 6) {
                int d = 20;
                System.out.println(c);
            }
//          System.out.println(d); // 超出範圍
        }
        
//      System.out.println(c); 超出範圍
    }
}