1. 程式人生 > 實用技巧 >Java選擇結構與變數

Java選擇結構與變數

一、基本if選擇結構

  1. 語法:if(布林表示式){ //程式碼塊 } ==》對布林表示式進行判斷,為true執行程式碼塊,為false跳過程式碼塊
  • class Demo03 {
    	public static void main(String[] args) {
    		System.out.println("Hello World!");
    		
    		// 判斷一把刀是不是管制刀具
    		int knifeLen = 155;
    
    		if(knifeLen >= 220){
    			System.out.println("這個刀子是管制刀具,要沒收...");
    		}
    
    		if(knifeLen < 220){
    			System.out.println("這個刀子不是管制刀具,可以攜帶...");
    		}
    	}
    }

二、if...else選擇結構

  1. 語法:if(判斷條件){ 程式碼塊1 } else{ 程式碼塊2 }==》對布林值進行判斷,為true執行程式碼塊1,為false執行程式碼塊2
  • class Demo04 {
    	public static void main(String[] args) {
    		System.out.println("Hello World!");
    		int knifeLen = 150;
    
    		// if...else
    		if (knifeLen >= 220){
    			System.out.println("管制刀具");
    		}else{
    			System.out.println("非管制刀具");
    		}
    	}
    }
    

三、多重if選擇結構

  1. 語法:if(布林表示式1){程式碼塊1}else if(布林表示式二){程式碼塊2}else if(布林表示式3){程式碼塊3}else{程式碼塊4}==》表示式1為true則不往下執行,為false則依次判斷表示式2、表示式3,表示式都為false則執行程式碼塊4
  • import java.util.Scanner;
    class Demo07 {
    	public static void main(String[] args) {
    		/*
    			鍵盤錄入一個數字(1--7),輸出對應日期需要上課的課程
    			1、匯入Scanner
    			2、建立Scanner物件
    			3、提示輸入日期1--7
    			4、獲取日期
    			5、使用if判斷,輸出這一天需要上的課程
    		*/
    		
    		Scanner in = new Scanner(System.in);
    	
    		System.out.println("請輸入查詢星期幾的課程(1--7)");
    		int day = in.nextInt();
    
    		// 5、使用if判斷,輸出這一天需要上的課程
    
    		if(day == 1){
    			System.out.println("今天是星期一,需要上語文課.");
    		} else if(day == 2){
    			System.out.println("今天是星期二,需要上數學課.");
    		} else if(day == 3){
    			System.out.println("今天是星期三,需要上英語課.");
    		} else if(day == 4){
    			System.out.println("今天是星期四,需要上體育課.");
    		} else if(day == 5){
    			System.out.println("今天是星期五,需要上語文課.");
    		} else if((day == 6) || (day == 7)){
    			System.out.println("今天是星期" + day + ",需要休息.");
    		} else{
    			System.out.println("您查詢的課程不存在...");
    		}
    	}
    } 

四、巢狀if選擇結構

  1. 語法:if(外層表示式){ if(內層表示式){//內層程式碼塊1}else{//內層程式碼塊2} }else{ //外層程式碼塊}==》外層表示式為true在判斷內層表示式,外層為false則直接輸出外層程式碼塊
  2. 注意:一個選擇結構中,可巢狀另一個選擇結構==》巢狀正確的情況下,支援任意組合
  • import java.util.Scanner;
    class Demo10 {
    	public static void main(String[] args) {
    		/*
    			模擬乘坐火車檢票安檢的過程
    		*/
    
    		Scanner in = new Scanner(System.in);
    
    		System.out.println("請出示你的車票(1=有票,0=無票):");
    		int ticket = in.nextInt();
    
    		// 判斷有沒有車票,如果有就可以去安檢
    		if(ticket>=1){
    			// 提示輸入安檢情況
    			System.out.println("有沒有攜帶違禁物品(true=有,false=無):");
    			boolean isDanger = in.nextBoolean();
    			// 判斷安全情況
    			if(isDanger){
    				System.out.println("請跟我走一趟....");
    			}else{
    				System.out.println("安檢通過,請排隊候車...");
    			}
    
    		}else{
    			// 無票,提示去買票
    			System.out.println("請先去購買車票...");
    		}
    	}
    }

五、分支結構

  1. 語法:switch(變數|表示式){ case 值1:邏輯程式碼1;case值2:邏輯程式碼2;case值n:邏輯程式碼n default: 為滿足時的邏輯程式碼 } ==》輸入值相應的數值,返回對應的邏輯程式碼塊,若沒有對應的值則返回default內容
  2. 注意:當匹配的case執行後,不會自動退出整個結構,而是繼續向下執行。 break關鍵字可在匹配的case執行後,跳出整個結構
  • import java.util.Scanner;
    class Demo13 {
    	public static void main(String[] args) {
    		/*
    			根據星期幾輸出上課的內容
    			1、匯入Scanner
    			2、建立Scanner物件
    			3、提示輸出星期幾day
    			4、獲取輸入的值
    			5、使用switch判斷輸出課程內容
    
    		*/
    	
    		Scanner in = new Scanner(System.in);
    		System.out.println("請輸入今天是星期幾(1--7):");
    		int day = in.nextInt();
    
    		// 5、使用switch判斷輸出課程內容
    		switch(day){
    			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;
    		}
    	}
    }

六、比較if和switch

import java.util.Scanner;
class Demo15 {
	public static void main(String[] args) {
		/*
			0 --59	不及格
			60--69	及格
			70--79	一般
			80--89	良好
			90--100	優秀
		*/

		Scanner in = new Scanner(System.in);
		System.out.println("請輸入考試成績(0--100):");
		int score = in.nextInt();
		
		if((score<0) || (score>100)){
			System.out.println("錯誤的分數");
		}else{
			// 合法的分數
			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("不及格,體驗一下男女混合雙打...");
			}
		}
	}
}

總結:

  • if中的判斷條件可以使等於某個具體的值,也可以是一個範圍

    • month==3

    • score>=90

  • switch中case後面的值只能是byte,short、int、char、String範圍內的值

    • 無法使用範圍進行操作,數字範圍過大,或者內容不確定且情況複雜的時候不能使用switch

    • 數值較少,內容固定的情況下可以使用switch

    • 常量的判定推薦使用switch

七、區域性變數

  1. 概念:
    • 定義在方法中的變數
    • 使用前必須先賦值---沒有預設值
    • 作用範圍只在當前方法裡面
    • 在同一作用域中變數名字不能重複
    • 宣告週期是從建立到方法結束
  • class Demo16 {
    	
    	public static void main(String[] args) {
    		/*
    			定義位置在方法中
    			使用前必須先賦值---沒有預設的值
    			作用範圍只在當前方法裡面
    			在同一個作用域中變數名字不能重複
    			生命週期是從建立到方法結束
    		*/
    		int age = 20;
    		System.out.println("age=" + age);
    
    		// int age = 22;
    		// show();
    		age = 33;
    	}
    
    	public static void show() {
    
    		System.out.println("age=" + age);
    	}
    }