分支結構(if/else,switch選擇判斷)
阿新 • • 發佈:2020-07-23
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 { publicstatic 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); 超出範圍 } }