乾貨滿滿~關於Java:if 、if-else、swtich的五種語句結構應用場景及使用方法解析

語句結構

   流程控制語句是用來控制程序中各語句執行順序的語句,可以把語句組合成能完成一定功能的小邏輯模塊。
   其流程控制方式採用結構化程序設計中規定的三種基本流程結構,即:順序結構、分支結構和循環結構,如下圖所示:在這裏插入圖片描述
順序語句: 按照正常的語句順序從上往下執行。
分支語句: 根據某種條件選擇執行。
循環語句: 根據某種條件反覆執行。

分支語句

分支語句的分類:
   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語句: 針對條件是等值的情況

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