6.java基礎-流程控制-順序結構&選擇結構
阿新 • • 發佈:2021-06-30
java基礎-流程控制-順序結構&選擇結構
順序結構
- java的基本結構就是順序結構,除非特別指明,否則就按照一句一句執行。
- 順序結構是最簡單的演算法結構。
- 語句與語句直接,框與框之間是按從上到下的順序進行的,它是由若干個依次執行的處理步驟組成的,它是任何一個演算法都離不開的一種基本演算法結構。
System.out.println("hello1"); System.out.println("hello2"); System.out.println("hello3"); System.out.println("hello4"); System.out.println("hello5"); System.out.println("hello6"); 輸出結果: hello1 hello2 hello3 hello4 hello5 hello6
選擇結構
選擇結構有多種,其中包括:
- if單選擇結構
- if雙選擇結構
- if多選擇結構
- 巢狀的if結構
- switch多選擇結構
if單選擇結構
- 我們很多時候需要去判斷一個東西是否可行,然後我們才去執行,這樣一個過程在程式中用if語句來表示。
語法:
if(布林表示式){
//如果布林表示式為true將執行的語句
}
例項:
Scanner scanner = new Scanner(System.in); System.out.println("請輸入內容:"); String s = scanner.nextLine(); //equals()方法判斷字串是否相等 if (s.equals("Hello")){ System.out.println(s); } System.out.println("end"); scanner.close(); 輸出結果1: 請輸入內容: Hello Hello end 輸出結果2: 請輸入內容: asdasd end
if雙選擇結構
- 那現在有個需求,公司要收購一個軟體,成功了,給人支付100萬元,失敗了,自己找人開發。這樣的需求用一個if就搞不定,我們需要有兩個判斷,需要雙選擇結構,就有了if-else結構
語法:
if(布林表示式){
//如果布林表示式為true
}else{
//如果布林表示式為false
}
例項:
判斷成績是否及格。
Scanner scanner = new Scanner(System.in); System.out.println("請輸入成績:"); int score = scanner.nextInt(); if(score>=60){ System.out.println("及格"); }else { System.out.println("不及格"); } scanner.close(); 輸出結果1: 請輸入成績: 60 及格 輸出結果2: 請輸入成績: 59 不及格
if多選擇結構
- 我們發現剛才的程式碼不符合實際情況,真實的情況還可能存在ABCD,存在區間多級判斷。比如90~100就是A,80~90就是b..等等,在生活中我們很多時候的選擇也不僅僅只有兩個,所以我們需要一個多選擇結構來處理這類問題。
語法:
if(布林表示式1){
//如果布林表示式1的值為true執行程式碼
}else if(布林表示式2){
//如果布林表示式2的值為true執行程式碼
}else if(布林表示式3){
//如果布林表示式3的值為true執行程式碼
}else if(布林表示式4){
//如果布林表示式4的值為true執行程式碼
}else{
//如果以上布林表示式都不為true執行程式碼
}
例項:
判斷成績的A,B,C,D級和是否合法
Scanner scanner = new Scanner(System.in);
System.out.println("請輸入成績:");
int score = scanner.nextInt();
if(score==100){
System.out.println("滿分");
}else if(score<100 && score>=90){
System.out.println("A級");
}else if(score<90 && score>=80){
System.out.println("B級");
}else if(score<80 && score>=70){
System.out.println("C級");
}else if(score<70 && score>=60){
System.out.println("D級");
}else if(score>=0 && score<=60){
System.out.println("不及格");
}
else{
System.out.println("成績不合法");
}
scanner.close();
輸出結果1:
請輸入成績:
101
成績不合法
輸出結果2:
請輸入成績:
100
滿分
輸出結果3:
請輸入成績:
60
D級
總結:
- if語句至多有一個else語句,else語句在所有的else if語句之後。
- if語句可以有諾幹個else if語句,它們必須在else語句之前。
- 一旦其中一個else if 語句檢測唯true,其他的else if以及else語句都將跳過執行。
巢狀的if結構
- 使用巢狀的if..else語句是否合法的。也就是說你可以在另一個if或者else if語句中使用if或者else if語句。你可以像if語句一樣巢狀else if...else。
語法:
if(布林表示式1){
//如果布林表示式1的值為true執行程式碼
if(布林表示式2){
//如果布林表示式2的值為true執行程式碼
}
}
switch多選擇結構
- switch case語句判斷一個變數與一系列值中某個值是否相等,每一個值稱為一個分支。
- switch 語句中的變數型別可以是:
- byte,short,int,char。
- 從Java SE 7 開始 switch支援字串String型別。
- 同時case 標籤必須為字串常量或字面值。
語法:
switch(expression){
case value:
//語句
break;//可選
case value:
//語句
break;//可選
default: //可選
//語句
}
例項1:
簡單的switch選擇結構
char grade = 'A';
switch(grade){
case 'A':
System.out.println("優秀");
break; //可選 根據break判斷是否繼續輸出
case 'B':
System.out.println("良好");
break;
case 'C':
System.out.println("及格");
break;
case 'D':
System.out.println("再接再厲");
break;
case 'E':
System.out.println("掛科");
break;
default:
System.out.println("未知等級");
}
輸出結果:
優秀
例項2:
switch的穿透
我們將變數值改為b,然後把從B開始的break全部都去掉。
char grade = 'B';
switch(grade){
case 'A':
System.out.println("優秀");
break; //可選 根據break判斷是否繼續輸出
case 'B':
System.out.println("良好");
case 'C':
System.out.println("及格");
case 'D':
System.out.println("再接再厲");
case 'E':
System.out.println("掛科");
default:
System.out.println("未知等級");
}
輸出結果:
良好
及格
再接再厲
掛科
未知等級
就會把從B開始的全部要執行的程式碼都輸出。
例項3:
JDK7的新特性,可以進行字串的對比。
String name = "小明";
switch (name){
case "小紅":
System.out.println("小紅");
break;
case "小明":
System.out.println("小明");
break;
default:
System.out.println("!!!");
}
輸出結果:
小明
總結:
- 每次寫一個case最好都加上break,除非有其他需求。
- switch具有穿透特性。
- swtich只能進相同的對比,對比是否相同。