文本關鍵字:基本結構、選擇結構、if、else、switch、casejava
使用if-else選擇結構時,一個最基本的原則就是必定會有一個判斷條件,而且若是出現else必定會有一個與之對應的if。ide
對於switch-case結構,總體的結構與if-else不一樣,雖然也是進行判斷,可是switch-case是指定一個變量或表達式做爲須要比對的值,經過case來羅列與之匹配的值,並寫出該狀況下須要執行的代碼。設計
單if結構是最簡單的選擇結構,表達的含義是:符合條件時,執行部分代碼,不符合條件時,什麼都不作,繼續執行選擇結構以後的代碼。須要注意的是,if用小括號裝一個條件,默認只能控制一條語句,若是須要控制多條語句須要使用大括號。3d
public static void main(Stirng[] args){ // 假若有以下場景:你天天回家都要彙報你的考試成績和完成家庭做業 // 若是你考的不錯(90分以上),那麼就會獲得一次誇獎 // 若是考的不怎麼樣,就什麼都不會發生 // 並且,無論考的怎麼樣,做業都是要完成的,就是如此的悲催 int score = 92; if(score >= 90){ // 爲了不沒必要要的麻煩,即便是一行代碼咱們也加上大括號,這招挺管用的! System.out.println("考的不錯!"); } System.out.println("開始寫做業"); }
if-else結構是最基本的選擇結構,明確一個判斷條件後,指定條件成立時作什麼,條件不成立時作什麼。code
public static void main(Stirng[] args){ // 假若有以下場景:根據不一樣的年級進入不一樣的活動教室 // 3年級及如下的學生進入活動室一 // 其餘年級學生進入活動教室二 int grade = 2; if(grade <= 3){ // 爲了不沒必要要的麻煩,即便是一行代碼咱們也加上大括號,這招挺管用的! System.out.println("進入活動教室一"); }else{ System.out.println("進入活動教室二"); } }
若是咱們須要具體判斷的條件不少,那麼咱們就須要使用到多個if。須要注意的是,咱們能夠在一段程序中使用多個並列的if-else結構,可是這和if-eles if-else的結構並不等效,請看流程圖。
並列的if-else結構,每一個if後面均可以引導判斷條件,可是相互之間相對獨立,無關聯。blog
// 僞代碼以下: public static void main(Stirng[] args){ if(條件){ // 程序代碼 }else{ // 程序代碼 } if(條件){ // 程序代碼 }else{ // 程序代碼 } }
對於if-else if-else結構,若是一個if中的條件爲真,則其餘的判斷分支將不會執行,即便判斷結果爲真!字符串
// 僞代碼以下: public static void main(Stirng[] args){ if(條件){ // 程序代碼 }else if(條件){ // 程序代碼 }else{ // 程序代碼 } }
掌握了基本條件判斷結構後,對於複雜問題可能須要使用到嵌套結構。好比某一個問題須要分兩種或多種狀況討論,而這幾種狀況又須要進一步分多種狀況討論。it
// 僞代碼以下: public static void main(Stirng[] args){ if(條件){ // 程序代碼 if(條件){ // 程序代碼 }else{ // 程序代碼 } }else{ // 程序代碼 } }
switch-case結構也是選擇結構的一種,主要使用在選擇條件較多,而且主要是等值判斷時。若是咱們須要使用switch-case結構進行某一個範圍的判斷,那就須要下一點功夫來進行轉換。程序設計
在這種狀況下會按次序進行判斷執行匹配到的case後面的代碼,執行完畢後直接結束switch-case結構,當全部的case都沒有匹配時,會執行default相關的代碼。
class
public static void main(Stirng[] args){ String sex = "女"; switch(sex){ case "男": System.out.println("男生"); break; case "女": System.out.println("女生"); break; default: System.out.println("怕是變異了?"); } }
當case對應的值被匹配到後,對應的代碼會被執行,因爲沒有break,將會繼續執行下一個case對應的代碼(包括default),直到整個switch-case都結束或遇到一個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("成績錄入有誤"); } }