語句結構
流程控制語句是用來控制程序中各語句執行順序的語句,可以把語句組合成能完成一定功能的小邏輯模塊。
其流程控制方式採用結構化程序設計中規定的三種基本流程結構,即:順序結構、分支結構和循環結構,如下圖所示:
順序語句: 按照正常的語句順序從上往下執行。
分支語句: 根據某種條件選擇執行。
循環語句: 根據某種條件反覆執行。
分支語句
分支語句的分類:
1.單if語句
2.If-else語句
3.多重if語句
4.嵌套if語句
5.switch語句
一、單if語句
引入
需求: 小明考試成績60分以上獎勵電腦
我們可以使用三目運算符實現,但是三目運算符的Y和Z表達式只能夠書寫一條語句,所以不能夠滿足我們開發的一些複雜需求,所以可以使用選擇語句
格式
if(條件表達式) {
語句體;
}
注意事項
1.條件表達式的結果必須是boolean類型,一般都是關係表達式或者邏輯運算符連接多個關係表達式
2.語句體中可以有一條語句也可以有多條語句,如果語句體中只有一條語句,那麼{}可以省略不寫,但是建議寫上,提高可讀性
3.能夠使用三目運算符改進的選擇語句,儘量使用三目改進,如果改進不了才使用選擇語句
4.if(score >= 60);{} 表示無論條件是否成立,都會執行與語句體,因爲if和;構成了選擇語句
應用場景
針對條件單一的情況使用單if語句
代碼實例
public class IfDemo01 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("請輸入成績: ");
double score = input.nextDouble();
if(score >= 60);{
System.out.println("獎勵電腦");
}
}
}
二、if-else語句
引入
需求: 小明考試成績60分以上獎勵手機,否則獎勵電腦
格式
if(條件表達式) {
語句體1;
} else {
語句體2;
}
執行流程
1.首先執行條件表達式
2.判斷條件表達式是否成立
成立
執行語句體1
不成立
執行語句體2
注意事項
1.條件表達式的結果必須是boolean類型,一般都是關係表達式或者邏輯運算符連接多個關係表達式
2.語句體中可以有一條語句也可以有多條語句,如果語句體中只有一條語句,那麼{}可以省略不寫,但是建議寫上,提高可讀性
3.能夠使用三目運算符改進的選擇語句,儘量使用三目改進,如果改進不了才使用選擇語句
應用場景
針對兩種情況的時候使用
代碼實例
public class IfDemo02 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("請輸入成績: ");
double score = input.nextDouble();
// System.out.println((score >= 60) ? "獎勵手機" : "獎勵電腦");
if (score >= 60)
System.out.println("獎勵手機");
else
System.out.println("獎勵電腦");
}
}
三、多重if語句
引入
需求: 老師批改試卷,成績在90分以上的爲優秀,成績在80-90的爲良好,成績在60-80的爲及格,60以下的爲差,該怎麼實現呢?
格式
if(條件表達式1) {
語句體1;
} else if(條件表達式2) {
語句體2;
} else if(條件表達式3) {
語句體3;
} …(條件表達式n) {
語句體n;
} else {
語句體n+1;
}
執行流程
1.首先判斷條件表達式1是否成立
成立
執行語句體1;
不成立 a<=30 || a>=40
繼續判斷條件表達式2 是否成立
成立
執行語句體2
不成立
繼續判斷…
2.如果全部都不成立,那麼就執行else語句
注意事項
1.所有的條件表達式的結果必須是boolean類型,一般都是 關係表達式或者邏輯運算符連接多個關係表達式
2.語句體中可以有一條語句也可以有多條語句,如果語句體中只有一條語句,那麼{}可以省略不寫,但是建議寫上,提高可讀性
3.多重if語句不能夠使用三目運算符改進
4.score > 100 || score < 0的不成立條件是score <= 100 && score >= 0,也就是邏輯&&的反條件是邏輯||
5.無論你書寫多少個條件,只有一個條件中的語句體被執行
6.else if語句可以書寫1~n個,但是if語句和else語句只能夠有一個,並且else語句有的時候可以省略不寫,但建議寫上
應用場景
針對多個條件的情況,並且常用於區間判斷
代碼示例
public class IfDemo03 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("請輸入成績: ");
double score = input.nextDouble();
if (score > 100 || score < 0) {
System.out.println("您輸入的成績無效!");
} else if (score >= 90 && score <= 100) {
System.out.println("優秀");
} else if (score >= 80 && score < 90) {
System.out.println("良好");
} else if (score >= 60 && score < 80) {
System.out.println("及格");
} else {
System.out.println("差");
}
}
}
四、嵌套if語句
引入
需求: 學校舉行運動會,百米賽跑跑入10秒內的學生有資格進決賽,根據性別分別進入男子組和女子組
格式
本質上並沒有真正意義上的嵌套if語句,只不過是前三種if語句格式綜合起來的一種,沒有固定格式,如下所示:
if() {
if() {}
else if() {}
else {
if() {} else {}
}
} else {
if() {}
}
應用場景
針對多種條件多種情況的場景
注意事項
1.== 只能夠比較基本數據類型是否相等,String是引用類型,所以不能夠比較,這裏暫時使用equals方法來比較字符串是否相等
2.嵌套語句一般會降低程序的可讀性,所以慎用,能用三目就用三目
代碼示例
public class IfDemo04 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("請輸入跑步成績: ");
double score = input.nextDouble();
System.out.print("請輸入性別: ");
String gender = input.next();
if (score < 10) {
if (gender.equals("男")) {
System.out.println("恭喜進入男子組決賽");
} else if (gender.equals("女")) {
System.out.println("恭喜進入女子組決賽");
} else {
System.out.println("恭喜進入人妖組一決雌雄!!!");
}
} else {
System.out.println("回去多跑一會,明年再來!!!");
if (gender.equals("女")) {
System.out.println("別走,送你一雙運動鞋,謝謝參與");
}
}
}
}
五、switch語句
引入
需求: 電話呼叫案例,歡迎致電中國電信,查詢服務請按1,寬帶業務諮詢辦理請按2,手機業務諮詢辦理請按3,障礙報修請按4,投訴業務請按5,轉人工服務請按6,充值繳費請按7,政府及企業客戶請按8,無需幫助請按請按0,控制檯輸入對應的數字顯示對應的服務。輸入有誤顯示“對不起您的輸入有誤”
格式
switch (表達式) {
case value1:
break;
case value2:
break;
default:
break;
}
注意事項
1.表達式可以是變量也可以是常量,也可以是一個複雜表達式
表達式的取值範圍 byte short char int String 枚舉
在JDK7以後可使用String類型
在JDK5以後可以使用枚舉類型
其實這裏之所以可以使用 byte short char 是因爲底層在參與運算的時候會轉換成 int類型來處理
2.case子句必須是常量表達式,case子句可以有多個,但是每一個case子句的取值不能夠重複
3.default子句類似於if語句的else語句,可以省略的,但是不建議,一般用來處理一種其他的情況,可以出現在switch語句中的任意位置,但是一般建議寫在最後面。
4.break子句表示退出switch語句體,break語句也可以省略,一旦省略會出現break穿透現象,一般不會省略break子句
5.break穿透現象: 會依次往下執行case子句,直到碰到switch的右大括號
多重if語句和switch語句的區別
1.if語句條件表達式只能夠是boolean類型, switch語句不可以是boolean類型,必須是byte short int char String 枚舉其中之一。
2.switch語句常用於等值判斷,而多重if語句常用語區間判斷
3.能夠使用switch語句的情況就一定可以使用多重if改進,反之不成立
應用場景
switch語句常用於等值判斷
代碼示例
public class SwitchDemo01 {
public static void main(String[] args) {
System.out.println(
"歡迎致電中國電信,查詢服務請按1,寬帶業務諮詢辦理請按2,手機業務諮詢辦理請按3,障礙報修請按4,投訴業務請按5,轉人工服務請按6,充值繳費請按7,政府及企業客戶請按8,無需幫助請按請按0,控制檯輸入對應的數字顯示對應的服務。");
Scanner input = new Scanner(System.in);
System.out.print("請輸入服務編號: ");
int choice = input.nextInt();
switch (choice) {
case 1:
System.out.println("查詢服務");
break;
case 2:
System.out.println("寬帶業務諮詢辦理");
break;
default:
System.out.println("default子句");
break;
case 3:
System.out.println("手機業務諮詢辦理");
break;
case 4:
System.out.println("障礙報修");
break;
case 5:
System.out.println("投訴業務");
break;
}
}
}
五種選擇語句的選取
單if語句: 針對一種情況的時候
if-else語句: 針對兩種情況的時候
多重if語句: 針對多種情況的時候,常用於區間判斷
嵌套if語句: 針對多種條件的時候
swtich語句: 針對條件是等值的情況