Java程式設計的基本結構 - 選擇結構
文本關鍵字:基本結構、選擇結構、if、else、switch、case
一、if-else結構
使用if-else選擇結構時,一個最基本的原則就是一定會有一個判斷條件,并且如果出現else一定會有一個與之對應的if。
- 代碼格式:if(判斷條件){}else{}
- 判斷條件部分可以直接使用布爾值:true/false
- 如果使用表達式作為判斷條件則必須要保證最終的計算結果為布爾類型
對于switch-case結構,整體的結構與if-else不同,雖然也是進行判斷,但是switch-case是指定一個變量或表達式作為需要比對的值,通過case來羅列與之比對的值,并寫出該情況下需要執行的代碼。
- 代碼格式:switch(變量或表達式){case 比對值:代碼片段;default:代碼片段;}
- 變量或表達式結果的類型隻能為:整數類型(byte、short、int),字元串String,字元char,枚舉enum
- case本身具有穿透的特點,會從一個比對的case進入執行,直到遇到break;為止
- default關鍵字可以不出現,如果出現隻能出現在最後的位置,在所有case都沒有比對時執行(如果離default最近的一個case沒有使用break,則也可能會被執行)
1. 單if結構
單if結構是最簡單的選擇結構,表達的含義是:符合條件時,執行部分代碼,不符合條件時,什麼都不做,繼續執行選擇結構之後的代碼。需要注意的是,if用小括号裝一個條件,預設隻能控制一條語句,如果需要控制多條語句需要使用大括号。
public static void main(Stirng[] args){
// 假如有如下場景:你每天回家都要彙報你的考試成績和完成家庭作業
// 如果你考的不錯(90分以上),那麼就會得到一次誇獎
// 如果考的不怎麼樣,就什麼都不會發生
// 而且,不管考的怎麼樣,作業都是要完成的,就是如此的悲催
int score = 92;
if(score >= 90){
// 為了避免不必要的麻煩,即使是一行代碼我們也加上大括号,這招挺管用的!
System.out.println("考的不錯!");
}
System.out.println("開始寫作業");
}
2. if-else結構
if-else結構是最基本的選擇結構,明确一個判斷條件後,指定條件成立時做什麼,條件不成立時做什麼。
public static void main(Stirng[] args){
// 假如有如下場景:根據不同的年級進入不同的活動教室
// 3年級及以下的學生進入活動室一
// 其他年級學生進入活動教室二
int grade = 2;
if(grade <= 3){
// 為了避免不必要的麻煩,即使是一行代碼我們也加上大括号,這招挺管用的!
System.out.println("進入活動教室一");
}else{
System.out.println("進入活動教室二");
}
}
3. if-else if-else結構
如果我們需要具體判斷的條件很多,那麼我們就需要使用到多個if。需要注意的是,我們可以在一段程式中使用多個并列的if-else結構,但是這和if-eles if-else的結構并不等效,請看流程圖。
并列的if-else結構,每個if後面都可以引導判斷條件,但是互相之間相對獨立,無關聯。
// 僞代碼如下:
public static void main(Stirng[] args){
if(條件){
// 程式代碼
}else{
// 程式代碼
}
if(條件){
// 程式代碼
}else{
// 程式代碼
}
}
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicGcq5yY1MDZ1YWMmRmYyYGMykTY1Y2NxcTMiJTO5UGMjJzMj9CX0V2ZvwVZslmZvwVbvNmLy9GdpRWZrJXYt5yd3d3Lc9CX6MHc0RHaiojIsJye.jpg)
對于if-else if-else結構,如果一個if中的條件為真,則其他的判斷分支将不會執行,即使判斷結果為真!
// 僞代碼如下:
public static void main(Stirng[] args){
if(條件){
// 程式代碼
}else if(條件){
// 程式代碼
}else{
// 程式代碼
}
}
4. 嵌套結構
掌握了基本條件判斷結構後,對于複雜問題可能需要使用到嵌套結構。比如某一個問題需要分兩種或多種情況讨論,而這幾種情況又需要進一步分多種情況讨論。
// 僞代碼如下:
public static void main(Stirng[] args){
if(條件){
// 程式代碼
if(條件){
// 程式代碼
}else{
// 程式代碼
}
}else{
// 程式代碼
}
}
二、switch-case
1. 含有break和default
public static void main(Stirng[] args){
String sex = "女";
switch(sex){
case "男":
System.out.println("男生");
break;
case "女":
System.out.println("女生");
break;
default:
System.out.println("怕是變異了?");
}
}
2. 無break
public static void main(Stirng[] args){
// 有的時候我們剛好可以利用一下穿透的特點,來進行區間的判斷
// 下面是一個經典案例:根據分數進行分檔
// 90-100:A,80-89:B,70-79:C,60-69:D,0-59:不及格,其他:錯誤的分數
int score = 75;
// switch的括号中可以使用表達式,隻要計算結果的類型滿足要求即可
// 對分數進行區間的劃分,相當于變向的範圍判斷
switch(score / 10){
case 10:
// 此處什麼都不填寫,比對到之後自動去執行case9對應的代碼
// 但是case10不能省略,否則會丢失100分時的情況
case 9:
System.out.println("A");
break;
case 8:
System.out.println("B");
break;
case 7:
System.out.println("C");
break;
case 6:
System.out.println("D");
break;
case 5:
case 4:
case 3:
case 2:
case 1:
case 0:
// 繼續使用穿透的特點,表示0-59分時的情況
System.out.println("不及格");
break;
default:
// 當分數為負數或大于100分時執行這部分的代碼
System.out.println("成績錄入有誤");
}
}