1. 程式人生 > >Java語言基礎(四) : 選擇結構之 if 語句

Java語言基礎(四) : 選擇結構之 if 語句

在Java中,選擇結構有:if語句和switch語句。

if語句的語法格式1:

        if(比較表示式) {
            語句體;
        }

它的執行流程:
1.先計算比較表示式的值,看其返回值是true還是false。
2.如果是true,就執行語句體;
3.如果是false,就不執行語句體;
下面通過程式碼來演示if語句:

public class IfDemo01 {
    public static void main(String[] args) {
        int x = 10;     
        if(x == 10
) { System.out.println("x等於10"); } if(x == 20) { System.out.println("x等於20"); } System.out.println("over"); } }

我們在使用if語句的時候需要注意什麼呢?
1.比較表示式無論簡單還是複雜,結果必須是boolean型別
2.if語句控制的語句體如果是一條語句,大括號可以省略;如果是多條語句,就不能省略。建議永遠不要省略。
3.一般來說:有左大括號就沒有分號,有分號就沒有左大括號
如下程式碼:

public class IfDemo02 {
    public static void main(String[] args) {
        int x = 10;

        if(x == 10) {
            System.out.println("x等於10");
        }

        if((x > 5) || (x == 10)) {
            System.out.println("x大於或者等於10");
        }
        System.out.println("-------------------"
); int a = 100; /* if(a == 100) { System.out.println("a的值是100"); } */ if(a != 100) { System.out.println("a的值是100"); System.out.println("over"); } System.out.println("-------------------"); int b = 100; if(b != 100); //這裡其實是有語句體的,只不過是空語句體。 //程式碼塊 { System.out.println("b的值是100"); System.out.println("over"); } } }

if語句的語法格式2:

        if(比較表示式) {
            語句體1;
        }else {
            語句體2;
        }

它的執行流程:
1.首先計算比較表示式的值,看其返回值是true還是false。
2.如果是true,就執行語句體1;
3.如果是false,就執行語句體2;
我們需要注意的是:else後面是沒有比較表示式的,只有if後面有。
如下我的程式碼:

public class IfDemo03 {
    public static void main(String[] args) {
        //判斷兩個資料是否相等        
        int a = 10;
        int b = 20;     
        if(a == b) {
            System.out.println("a等於b");
        }else {
            System.out.println("a不等於b");
        }
    }
}

由於if語句的第二種格式剛才也完成了三元運算子可以完成的效果。所以,我們就認為他們可以完成一樣的操作。但是,他們就一點區別沒有嗎?肯定不是。
區別:
三元運算子實現的,都可以採用if語句實現。反之不成立。
什麼時候if語句實現不能用三元改進呢?
當if語句控制的操作是一個輸出語句的時候就不能。
為什麼呢?
因為三元運算子是一個運算子,運算子操作完畢就應該有一個結果,而不是一個輸出。
如下看我的程式碼:

public class IfDemo04 {
    public static void main(String[] args) {
        //獲取兩個資料的最大值
        int a = 10;
        int b = 20;     
        //用if語句實現
        int max1;
        if(a > b) {
            max1 = a;
        }else {
            max1 = b;
        }
        System.out.println("max1:"+max1);       
        //用三元改進
        int max2 = (a > b)? a: b;
        System.out.println("max2:"+max2);
        System.out.println("----------");       
        //判斷一個數據是奇數還是偶數,並輸出是奇數還是偶數
        int x = 100;        
        if(x%2 == 0) {
            System.out.println("100是一個偶數");
        }else {
            System.out.println("100是一個奇數");
        }       
        //用三元改進
        //這種改進是錯誤的。
        //String s = (x%2 == 0)?System.out.println("100是一個
        //偶數");:System.out.println("100是一個奇數");;
    }
}

if語句的語法格式3:

        if(比較表示式1) {
            語句體1;
        }else if(比較表示式2) {
            語句體2;
        }else if(比較表示式3) {
            語句體3;
        }
        ...
        else {
            語句體n+1;
        }

它的執行流程:
1.首先計算比較表示式1看其返回值是true還是false,
2.如果是true,就執行語句體1,if語句結束。
3.如果是false,接著計算比較表示式2看其返回值是true還是false,如果是true,就執行語句體2,if語句結束。
4.如果是false,接著計算比較表示式3看其返回值是true還是false,…如果都是false,就執行語句體n+1。
下面通過案例演示if語句語法3,如下:
案例:鍵盤錄入一個成績,判斷並輸出成績的等級。

import java.util.Scanner;

public class IfDemo05 {
    public static void main(String[] args) {
        //需求:鍵盤錄入一個成績,判斷並輸出成績的等級。
        /*
            90-100 優秀
            80-9070-8060-70  及格
            0-60   不及格
        */

        //建立鍵盤錄入物件
        Scanner sc = new Scanner(System.in);        
        //錄入資料
        System.out.println("請輸入你的考試成績:");
        int score = sc.nextInt();       
        /*
        if(score>=90 && score<=100) {
            System.out.println("優秀");
        }else if(score>=80 && score<90) {
            System.out.println("好");
        }else if(score>=70 && score<80) {
            System.out.println("良");
        }else if(score>=60 && score<70) {
            System.out.println("及格");
        }else {
            System.out.println("不及格");
        }
        */
        //這樣寫已經滿足我的基本要求,但是可能別人在使用的時候,不會按照你要求的資料給出了。
        //在做一個程式的基本測試的時候,一定要考慮這樣的幾個問題:
        //正確資料,錯誤資料,邊界資料。
        //而我們剛才寫的程式並沒有處理錯誤資料,所以這個程式不是很好,要改進
        /*
        if(score>=90 && score<=100) {
            System.out.println("優秀");
        }else if(score>=80 && score<90) {
            System.out.println("好");
        }else if(score>=70 && score<80) {
            System.out.println("良");
        }else if(score>=60 && score<70) {
            System.out.println("及格");
        }else if(score>=0 && score<60){
            System.out.println("不及格");
        }else {
            System.out.println("你輸入的成績有誤");
        }
        */      
        //另一種判斷改進
        if(score<0 || score>100) {
            System.out.println("你輸入的成績有誤");
        }else if(score>=90 && score<=100) {
            System.out.println("優秀");
        }else if(score>=80 && score<90) {
            System.out.println("好");
        }else if(score>=70 && score<80) {
            System.out.println("良");
        }else if(score>=60 && score<70) {
            System.out.println("及格");
        }else {
            System.out.println("不及格");
        }
    }
}