3.2 選擇結構語句

3.2 選擇結構語句
根據不同的現有條件來決定用什麼方法(或手段)解決問題,這種情況,無論在學習、工作及日常生活中比比皆是。假如某超市正在進行促銷活動,規定凡購物總額達到1000元以上的顧客可享受九折優惠,在結賬處就可以用這樣的程序段解決問題:


這就是我們即將要向大家詳細介紹的選擇結構語句的設計與使用。
選擇結構是根據假設的條件成立與否,再決定執行什麼樣語句的結構,它的作用是讓程序更具有智能性。

3.2.1 if語句
if語句是最簡單的選擇結構語句,格式如下:  
i f<表達式>{  語句塊}

其中表達式的設置是很重要的,它返回邏輯(布爾)值,如果true則進入{}部分的語句塊處理。否則跳過該{}部分,執行下面的語句。如果{語句塊}中只有一句語句,則左右大括號可以不寫。If語句又稱爲單分支結構語句,它的執行流程如圖3ˉ2所示。
例3.2.1 使用if語句判別兩數是否相等。
程序如下:

如果程序中變量b的賦值爲2,則根據if語句的運行規則將不輸出任何結果。注意:該程序中表達式(a==b)中的關係運算符“==”不可以寫成“=”。
例3.2.2 if語句的重複使用:從鍵盤出入三個數,將其按從小到大的順序輸出。
程序如下:

                                            

3.2.2 if-else語句
if-else語句的操作比if語句多了一步:如果表達式的值爲假,則程序進入else部分的語句塊(語句塊2)處理。故它又被稱爲雙分支結構語句。

例3.2.3 通過鍵盤輸入兩個整數,用ifˉelse結構判別這兩個數是否相等,並分別輸出不同信息。
程序如下:

例3.2.4 輸入一個年份,由程序判斷該年是否爲閏年。
程序如下:

另外第2章中講過的三元條件運算符:“<表達式>?e1:e2”有時可代替ifˉelse結構,如(x>y)?x:y將返回x和y中較大的值。

3.2.3 if-else if語句
if-else if語句用於處理多個分支的情況,因此又稱多分支結構語句。
其語法格式爲:


if-else if語句的執行流程如圖3ˉ4所示。

 圖3-4 if-else if語句流程圖 

其中else部分爲可選。Else總是與離它最近的if配對使用。
例3.2.5 用ifˉelse if語句實現下面的符號函數:

程序如下:


3.2.4 if語句的嵌套
在if語句中又包含一個或多個if語句稱爲if語句嵌套,這是程序設計中經常使用的技術。
例如現在有三個整數a、b、c,要判別它們能否構成三角形的三條邊,則首先應判別這三個整數是否都大於零,然後才判別其任意兩個數之和是否大於第三個數,其程序塊爲: 

3.2.5 switch語句
switch語句是Java支持的另一種多分支結構語句,使用switch語句進行程序設計,將使程序的結構更簡練,表達更爲清晰。
switch語句語法結構如下: 


圖3ˉ5 switch語句流程圖 

switch語句的流程圖如圖3ˉ5所示。
說明:switch後面的表達式只能返回如int、byte、short和char類型的值,多分支結構把表達式返回的值依次與每個case子句中的值相比較。如果遇到匹配的值,則執行該case後面的語句塊。
case子句中的數值I必須是常量,且對應於執行不同操作的case子句中的數值I應是不同的。
default子句爲可選。當表達式的值與任何case子句中的值都不匹配時,程序執行default後面的語句;當表達式的值與任何case子句中的值都不匹配且沒有default子句,則程序將不執行任何操作,直接跳出switch語句。
break語句的作用是當執行完一個case分支後,終止switch結構的執行。因爲case子句只是起到一個標號的作用,用來查找入口並從此處開始執行。如果沒有break語句,當程序執行完匹配的case子句塊後,還會執行後面的case子句塊,這是不允許的。因此應該在每一個case分支後,用break語句終止後面的case分支語句塊的執行。
例3.2.6 用switch語句處理表達式中的運算符,並輸出運算結果。
程序如下:

程序運行結果:   80/9=8.888889
當多個相鄰的case分支執行一組相同操作時,相同的程序段可只出現在其最後一個case分支中,相對應的break語句也只需在此最後一個case分支出現即可。
例3.2.7 使用switch語句與if語句的程序:由鍵盤輸入年份與月份,由程序判別輸出該年的那個月有多少天。
程序如下:





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章