- 零基礎學Java第2版
- 陳潔
- 1223字
- 2018-12-31 19:34:34
4.2 條件語句
在現實生活中,經常聽人說:如果某人發財了,某人就會做什么。其實這就是程序設計中所說的條件語句。像“如果?”、“就?”、“否則?”,當然這只是很簡單的條件語句,在真正的程序設計中,使用的條件語句要比這復雜得多。
4.2.1 條件語句的種類
在程序設計中,條件語句的標準格式如下:
01 if(條件) 02 { 03 目的一; 04 } 05 else 06 { 07 目的二; 08 }
【實例4.3】掌握格式后,先看一個簡單的程序段。
01 ///將整型變量a,b的大小比較得出的布爾型變量作為條件語句的條件 02 ///通過條件語句來得出不同的輸出結果 03 public class control 04 { 05 public static void main(String[] args) 06 { 07 int a=20;08 int b=30; 09 if (a>b) 10 { 11 System.out.println("很幸運"); 12 } 13 else 14 { 15 System.out.println("很開心"); 16 } 17 } 18 }
【代碼說明】因為“a=20”而“b=30”,所以“a<b”。在條件語句中,程序代碼的意思是,如果“a>b”,就輸出“很幸運”,如果“a<b”,就輸出“很開心”,所以程序的輸出就是“很開心”。
【運行效果】
很開心
注意
條件表達式是一個關系表達式,其結果是布爾型數據。換句話解釋上面的程序段:如果“a>b”是真,就輸出“很幸運”,否則輸出“很開心”。
在條件語句的程序設計中,有一種最簡單的條件語句,如下所示:
01 if(條件) 02 目的;
如果有很多的目的,也可以采取下列的形式:
01 if(條件) 02 { 03 目的一; 04 目的二; 05 目的三; 06 目的四; 07 }
【實例4.4】下面看一個有關這種類型的條件語句的例子。
01 public class control1 02 { 03 public static void main(String[] args) 04 { 05 int salary=10000; 06 if (salary>500) 07 { 08 System.out.println("想請吃飯!"); 09 System.out.println("想請唱歌!"); 10 System.out.println("想請喝酒!"); 11 } 12 13 } 14 }
【代碼說明】條件語句中判斷“salary>500”是否為真,如果是真就輸出“想請吃飯!想請唱歌!想請喝酒!”,如果是假,就什么都不做。在程序中“salary=10000”,滿足“salary>500”,條件為真,所以輸出以上的三句話。
【運行效果】
想請吃飯! 想請唱歌! 想請喝酒!
注意
在多個目的的程序段中,一般按順序執行,即先目的一,再目的二,再目的三,依次執行下去。
如果出現多種不同的條件,應該如何處理呢?可以使用條件語句中的復雜型,其結構如下:
01 if (條件1) 02 { 03 目的1; 04 } 05 else if (條件2) 06 { 07 目的2; 08 } 09 else if (條件3) 10 { 11 目的3; 12 } 13 else 14 { 15 不滿足以上所有條件,如何辦; 16 }
【實例4.5】根據以上的結構,學習有關這種復雜條件語句的實例,代碼如下所示。
01 ///當achievement等于100,就獎勵一臺筆記本電腦 02 ///當achievement大于90小于100,就獎勵一個MP4 03 ///當achievement大于80小于90,就獎勵一塊網卡 04 ///當achievement大于60小于80,不給予獎勵 05 ///當achievement小于60,放假回學校補習 06 public class control2 07 { 08 public static void main(String[] args) 09 { 10 int achievement=85; 11 if(achievement==100) 12 { 13 System.out.println("獎勵一臺筆記本電腦"); 14 } 15 else if((achievement>=90)&&(achievement<100)) 16 { 17 System.out.println("獎勵一個MP4"); 18 } 19 else if((achievement>=80)&&(achievement<90)) 20 { 21 System.out.println("獎勵一塊網卡"); 22 } 23 else if((achievement>=60)&&(achievement<80)) 24 { 25 System.out.println("不給予任何獎勵"); 26 } 27 else 28 { 29 System.out.println("放假到學校補習"); 30 } 31 } 32 }
【代碼說明】上述代碼可以看出,當有多個不同的條件存在時,處理的結果就不一樣。成績在大于80小于90分之內,就可以獎勵一塊網卡,而成績大于90小于100分,則獎勵一個MP4。在此程序中,開始成績是85分,所以處理的結果就是獎勵一塊網卡。
【運行效果】
獎勵一塊網卡

圖4.1 條件語句流程圖
條件語句已經基本介紹完畢,很重要的一點就是,在程序設計的時候,思路一定要清晰,如何才能有很清晰的思路呢?那就是繪制流程圖。流程圖就是:在程序開發前,為了能夠思路更加清晰,而將整個程序執行的順序流程繪制出來。圖4.1為一個有關條件語句的通用流程圖。
將上面的程序段作為一個實例,繪制其基本的流程圖,如圖4.2所示。鑒于頁面的版面,這里只給出了4種條件,并沒有完全體現出上面案例的5種條件,讀者可自己畫一個完整的流程圖。

圖4.2 一個實例的條件流程圖
針對最復雜的條件語句,在程序設計中,有一種分支語句可以代替復雜條件語句。在實際程序開發過程中,使用條件語句類型比較多的是標準型,而復雜型的一般用分支語句來代替。當然也可以使用復雜型的條件語句。為了與實戰結合,下面看一個稍微復雜的程序段。
【實例4.6】條件:設計一個程序,用于計算語文(90)、英語(75)、數學(90)、藝術(85)四門功課的平均分,并對此學生進行評價。
在編寫程序之前要先繪制流程圖,這樣編程的思路就會非常清晰,本例流程如圖4.3所示。
根據以上的流程圖,開始編寫程序,程序代碼段如下。
01 ///通過計算學生的平均分Avg,得出這個學生的等級 02 ///如果是大于90小于或等于100則是優秀 03 ///如果是大于80小于或等于90則是良好 04 ///如果是大于70小于或等于80則是良 05 ///如果是大于60小于或等于70則是合格 06 ///如果小于或等于60則是不合格 07 public class control3 08 { 09 public static void main(String[] args) 10 { 11 int Chinese=90; 12 int English=75; 13 int Math=90; 14 int Art=85; 15 double Avg=(Chinese+English+Math+Art)/4; 16 if((Avg>90)&&(Avg<=100)) 17 { 18 System.out.println("這個學生的所有功課的平均分是:"+Avg); 19 System.out.println("這個學生的成績應得A,是優秀"); 20 } 21 else if((Avg>80)&&(Avg<=90)) 22 { 23 System.out.println("這個學生的所有功課的平均分是:"+Avg); 24 System.out.println("這個學生的成績應得B,是良好"); 25 } 26 else if((Avg>70)&&(Avg<=80)) 27 { 28 System.out.println("這個學生的所有功課的平均分是:"+Avg); 29 System.out.println("這個學生的成績應得C,是良"); 30 } 31 else if((Avg>60)&&(Avg<=70)) 32 { 33 System.out.println("這個學生的所有功課的平均分是:"+Avg); 34 System.out.println("這個學生的成績應得D,是合格"); 35 } 36 else 37 { 38 System.out.println("這個學生的所有功課的平均分是:"+Avg); 39 System.out.println("這個學生的成績應得E,是不合格"); 40 } 41 } 42 }

圖4.3 成績代碼條件流程圖
【代碼說明】第16~40行是復雜型的條件語句,判斷了5種情況下不同的輸出結果。第15行定義的是double變量,表示計算后的平均值。
【運行效果】
這個學生的所有功課的平均分是:85.0 這個學生的成績應得B,是良好
4.2.2 如何使用好條件語句
使用好條件語句需要注意以下幾點:
(1)應該繪制流程圖,使編程時思路更加清晰。
(2)編程時,在最簡單形式的條件語句中,可以不使用大括號,因為它不會產生混淆,但建議無論哪種形式的條件語句,都應該使用大括號。
- OpenDaylight Cookbook
- Mastering Adobe Captivate 2017(Fourth Edition)
- 動手玩轉Scratch3.0編程:人工智能科創教育指南
- VMware vSphere 6.7虛擬化架構實戰指南
- Python高效開發實戰:Django、Tornado、Flask、Twisted(第3版)
- Effective Python Penetration Testing
- Python機器學習經典實例
- C語言程序設計同步訓練與上機指導(第三版)
- Building Serverless Applications with Python
- C++對象模型詳解
- MySQL從入門到精通(軟件開發視頻大講堂)
- Clojure for Java Developers
- Kotlin進階實戰
- 數據結構:Python語言描述
- Effective C++:改善程序與設計的55個具體做法(第三版)中文版(雙色)