人類在處理事情的時候常常會根據不同的狀況而採用不同的策略,這是一種智慧的表現。程式設計的誕生就是為了建立輔助人類的判斷。條件流程控制的判斷依據只有兩種,分別表示邏輯的「true」與「false」。條件流程控制的判斷依據 if - else 運算式是否成立而執行。運算符號請參考運算式與運算子中的
關係運算子章節..
請嘗試下列程式碼是否與預期的結果一致 :
public class CH0601 {
public static void main(String[] args) {
int a = 1, b = 2, c = 3;
String StringA="hello", StringB="world";
System.out.println(a==b); //數值相等
System.out.println(a!=b); //數值不相等
System.out.println(StringA.equals(StringB)); //字串相等
System.out.println(!StringA.equals(StringB)); //字串不相等
System.out.println(a==b && a==c); //左右2邊的敘述均成立
System.out.println(a==b || a==c); //左右2邊的敘述任何1邊成立
System.out.println(a>b); //左側值大於右邊
System.out.println(a<b); //右側值大於左邊
}
}
只要是物件都有.equals(obj)方法,用於比較括號內的物件內容。
比較物件「相等」時至少2個運算子「==」「!=」,單個運算子「=」是賦值的意思。
if 單向流程控制
以單項條件判斷,當結果為「true」時所要進行的動作。這裡假設一個自動控制空調的程式裡有一個 temp 變數,其中存放的是現在的氣溫,當氣溫高過28度時運轉壓縮機, 當氣溫低於 26 度時自動關閉壓縮機。
public class CH0602 {
public static void main(String[] args) {
int temp = 29; //假設感測器提供的溫度為29度
if(temp > 28){
System.out.println("開放空調系統");
}
if(c < a)
System.out.println("關閉空調系統");
}
}
當if( )的比較運算結果為「true」時
程式執行if( ){ }後方大括號區塊的敘述。
若後後方沒有大括號,則執行第1個分號敘述。
建議在此階段儘量採用大括號區塊,以清楚分隔程式流程。
if 雙向流程控制
以單項條件判斷,當結果為「true」時所要進行的動作,以及結果為「false」時所要進行的動作。假設一個自動控制空調的程式裡有一個 hour 變數, 其中存放的是現在的時間,當時間超過早上8點時自動開放空調系統電源, 當超過下午4點自動關閉空調系統電源。
public class CH0603 {
public static void main(String[] args) {
int hour = 22; //假設計時器傳回時間為晚上10點
if(hour > 8 && hour < 16){
System.out.println("電源開啟");
}else{
System.out.println("電源關閉");
}
}
}
注意與CH010不同之處在於 else 的用法。
else{ }區塊表示當判斷式為「false」時,程式要執行的範圍。
鏈狀 if
當要檢查與問題相關的多於1個條件時,使用以多項條件判斷的鏈狀 if。當其中任一項判斷結果為「true」時,執行該區塊所要進行的動作。
這裡假設一個自動變頻空調的程式裡有一個 temp 變數,其中存放的是現在的氣溫,當氣溫高過30度時以全速運轉壓縮機, 當氣溫高於 28 度時以半速運轉壓縮機,而氣溫高於26度時以低速運轉,其他情況則停止壓縮機採用送風的方式運轉。
public class CH0604 {
public static void main(String[] args) {
int temp = 29; //假設感測器提供的溫度為29度
if (temp >= 30){
System.out.println("全速運轉");
}else if (temp < 30 && temp >= 28){
System.out.println("半速運轉");
}else if (temp < 28 && temp >= 26){
System.out.println("低速運轉");
}else{
System.out.println("送風運轉");
}
}
}
巢狀if
以多項條件判斷,視判斷結果執行不同區塊。這裡假設一個自動變頻空調的程式裡有一個 hour 變數和temp ,其中存放的是現在的時間和氣溫,當氣溫高過30度時以全速運轉壓縮機, 當氣溫高於 28 度時以半速運轉壓縮機,而氣溫高於26度時以低速運轉,當氣溫低於26度以送風運轉。另外,若時間為上午11點到下午1點之間除非氣溫超過38度以低速運轉,否則只以送風運轉。
public class CH0605 {
public static void main(String[] args) {
int temp = 34; // 假設感測器提供的溫度為34度
int hour = 12; // 中午12點
if (hour >= 11 && hour <= 13) {
if (temp >= 30) {
System.out.println("低速運轉");
} else {
System.out.println("送風運轉");
}
} else {
if (temp >= 30) {
System.out.println("全速運轉");
} else if (temp < 30 && temp >= 28) {
System.out.println("半速運轉");
} else if (temp < 28 && temp >= 26) {
System.out.println("低速運轉");
} else {
System.out.println("送風運轉");
}
}
}
}
請人性化改變 CH0605 程式中對午休時間的條件流程控制。
沒有留言:
張貼留言