Java選擇結構與變數
阿新 • • 發佈:2020-09-06
一、基本if選擇結構
- 語法: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選擇結構
- 語法: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選擇結構
- 語法: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選擇結構
- 語法:if(外層表示式){ if(內層表示式){//內層程式碼塊1}else{//內層程式碼塊2} }else{ //外層程式碼塊}==》外層表示式為true在判斷內層表示式,外層為false則直接輸出外層程式碼塊
- 注意:一個選擇結構中,可巢狀另一個選擇結構==》巢狀正確的情況下,支援任意組合
-
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("請先去購買車票..."); } } }
五、分支結構
- 語法:switch(變數|表示式){ case 值1:邏輯程式碼1;case值2:邏輯程式碼2;case值n:邏輯程式碼n default: 為滿足時的邏輯程式碼 } ==》輸入值相應的數值,返回對應的邏輯程式碼塊,若沒有對應的值則返回default內容
- 注意:當匹配的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("不及格,體驗一下男女混合雙打..."); } } } }
總結:
-
-
month==3
-
score>=90
-
-
switch中case後面的值只能是byte,short、int、char、String範圍內的值
-
無法使用範圍進行操作,數字範圍過大,或者內容不確定且情況複雜的時候不能使用switch
-
數值較少,內容固定的情況下可以使用switch
-
常量的判定推薦使用switch
-
七、區域性變數
- 概念:
- 定義在方法中的變數
- 使用前必須先賦值---沒有預設值
- 作用範圍只在當前方法裡面
- 在同一作用域中變數名字不能重複
- 宣告週期是從建立到方法結束
-
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); } }