选择分支结构
if選擇結構
if選擇結構有多種運用方式:單分支if選擇結構、雙分支if選擇結構、多分支if選擇結構、if選擇結構嵌套。
單分支if選擇結構
? 語法結構:
? ? ????????? ?if(條件){
? ? ? ? ? ? ? ????????代碼塊
? ? ? ??????????}?
注意:條件不管多么簡單還是多么復雜,都只能為布爾值?。
如果代碼塊只有一條語句,代碼塊所在的{}可以省略,但不建議 。
//張浩Java成績大于90分,老師獎勵他iPhone6s ,該怎么做呢? //聲明一個變量javaScore用來存儲張浩的Java成績double javaScore = 9; //根據張浩的java成績判斷他能不能拿到獎勵if(javaScore>=90){System.out.println("獎勵一部iPhone6S");}System.out.println("繼續努力");雙分支if選擇結構
????????? 語法結構:
?? ??? ? ? ? ? ? ? if(條件){
? ? ? ? ? ? ? ? ? ? ? ?代碼塊1;
? ? ? ? ? ? ? ? ? }else{
? ? ? ? ? ? ??? ? ? ? ?代碼塊2;
?? ??? ? ? ? ? ? ?}
? 執行規律:
? ? ? 如果條件為true,執行代碼塊1,執行完之后,執行if-else結構后面的代碼
? ? ? 如果條件為false,執行else{}里面的代碼塊2,執行完之后,執行if-else結構后面的代碼
?
多重if選擇結構
?語法結構:
? ? ? ? ? ?if(條件1){
? ? ? ? ? ? ?? ? ? 代碼塊1
? ? ? ? ? ?}else if(條件2){
? ? ? ? ? ? ? ? ? ?代碼塊2
? ? ? ? ? ?}else if(條件3){
? ? ? ? ????????? ?代碼塊3
? ? ? ? ? ?}else?if{
? ? ? ? ?..............
? ? ? ? ? ?}else{
? ? ? ? ? ? ? ? ? ?代碼塊n
? ? ? ? ? ?}
執行規律:
? ? ? ? ?(1)先判斷條件1,如果條件1為true,執行代碼塊1,執行完之后結束整個if-else-if結構,執行該結構后面的代碼
? ? ? ? ?(2)如果條件1為false,繼續往下判斷條件2,如果條件2為true, 執行代碼塊2,執行完之后結束整個if-else-if結構,執行該結構后面的代碼
? ? ? ? ?(3)如果條件2為false,繼續往下判斷條件3,如果條件3為true,執行代碼塊3,執行完之后結束整個if-else-if結構,執行該結構后面的代碼
? ? ? ? ?(4)......
? ? ? ? ?(5)如果所有的條件都為false,執行else里面的代碼塊n
?注意:
? ? ? ? (1)條件為布爾值
? ? ? ? (2)else if可以有1個、2個、多個
? ? ? ? (3)else也可以省略,如果所有的條件不成立,也沒有else,那么整個if-else-if結構不執行
? ? ? ? (4)多重if選擇結構中各個條件的順序不可以任意排列,要求從上往下由嚴格到寬松。? ? ? ?
嵌套if選擇結構
在一個if選擇結構中存在另外一個if選擇結構
? 語法結構:
? ? ? ? ? ? ? ?if(條件1){
? ? ? ? ? ? ? ? ? 代碼塊1
? ? ? ? ? ? ?????????? if(條件2){
? ? ? ? ? ? ? ? ? ????????代碼塊2
? ? ?? ? ? ? ????????? }else{
? ? ? ? ??? ? ? ? ????????代碼塊3
? ? ? ? ? ? ????????? ?}
? ? ? ? ? ? ? }else{
? ? ? ? ? ? ? ? ? 代碼塊4
? ? ? ? ? ? ? }
執行規律:
? ? ? ? ? ? 判斷條件1,條件1為true,執行代碼塊1,進一步判斷條件2,條件為true,執行代碼塊2,條件2為false,執行代碼塊3,執行完之后,結束整個所有的if結構。
? ? ? ? ? ??條件1為false,執行下面else里的代碼塊4。
Scanner類的使用:
?? ?第一步:導包
?? ??? ?import java.util.Scanner;或者import java.util.*;
?? ?第二步:創建Scanner類對象
?? ??? ?Scanner input = new Scanner(System.in);
?? ?第三步:獲取數據
?? ??? ?int num = input.nextInt(); ?獲取int類型數據
?? ??? ?double num2 = input.nextDouble(); ?獲取double類型數據
?? ??? ?String str= input.next(); ?獲取String類型數據
switch選擇結構
? switch(表達式){
? ? ? ? ? ? ? case 常量值1:
? ? ? ? ? ? ? ? ?代碼語句;
? ? ? ? ? ? ? ? ?break;
? ? ? ? ? ? ? case 常量值2:
? ? ? ? ? ? ? ? ? 代碼語句;
? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? case 常量值3:
? ? ? ? ? ? ? ? ? 代碼語句;
? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ?.........
? ? ? ? ? ? ? default:
? ? ? ? ? ? ? ? ? 代碼語句;
? ? ? ? ? ? ? ? ? ?break;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????}?
執行規律:
? ? ? ? ? ? ?根據表達式的值,來與case后面的常量值進行匹配
? ? ? ? ? ??匹配上哪個常量值,就執行該case里面的代碼語句,代碼語句執行完,執行break,退出整個Switch選擇結構,執行Switch選擇結構后面的代碼
? ? ? ?? ? ? 如果表達式的值與所有的case常量值不匹配,則執行default里面的代碼語句,執行完執行break語句,退出整個Switch選擇結構
?注意事項:
? ? ? ? ? ? ?(1)表達式的值可以是int、short、byte、char、枚舉類型、String(JDK7及以后版本可以使用)
? ? ? ? ? ? ?(2)case常量值不能相同
? ? ? ? ? ? ?(3)default語句可以在任意位置,一般來說寫在最后,也可以省略不寫
? ? ? ? ? ? ?(4)break的作用是結束整個Switch選擇結構,如果不寫,會造成“case穿透”現象,此現象可以合理使用
? ? ? ? ?
總結
- 上一篇: BIOS知识枝桠—— Protocol
- 下一篇: 大数据与个人隐私的平衡:懂你,但不认识你