1. 程式人生 > 其它 >6.java基礎-流程控制-順序結構&選擇結構

6.java基礎-流程控制-順序結構&選擇結構

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級

總結:

  1. if語句至多有一個else語句,else語句在所有的else if語句之後。
  2. if語句可以有諾幹個else if語句,它們必須在else語句之前。
  3. 一旦其中一個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只能進相同的對比,對比是否相同。