Java/分支結構

維基教科書,自由的教學讀本

在程序中,分支結構做出判斷並決定進入哪個分支。

順序結構只能順序執行,不能進行判斷和選擇,因此需要分支結構。分支結構有以下幾種,雖然用法不同,但本質是相通的。

if...else[編輯]

最基本的形式是if-else

public class Exercise {
    public static void main(String args[]){
        //分支开始
        if( 2 > 3 )                         //判断条件
            System.out.println("是真的");	//若真则执行if后面的语句
        else
            System.out.println("是假的");	//若假则执行else后面的语句
        //分支结束

        System.out.println("结束");         //分支完成后,继续执行
    }
}

也可以不用else,僅用if;else不執行任何操作:

public class Exercise {
    public static void main(String args[]){
        //分支开始
        if( 2 > 3 )                         //判断条件
            System.out.println("是真的");	//若真则执行if后面的语句
        //分支结束

        System.out.println("结束");         //分支完成后,继续执行
    }
}

亦可以嵌套,分支之後再分支:

public class Exercise {
    public static void main(String args[]){
        int num = 9;
        if( num >= 0 )              //判断正负
            if( num % 2 == 0 )      //判断奇偶
                System.out.println( num + "是正偶数或0");
            else
                System.out.println( num + "是正奇数");
        else
            if( num % 2 == 0 )      //判断奇偶
                System.out.println( num + "是负偶数");
            else
                System.out.println( num + "是负奇数");
    }
}

比較常見的一種嵌套形式是if...else if...else if...else...:

public class Exercise {
    public static void main(String args[]){
        int A = 1, B = 2, C = 3, D = 4;
        if( D < A )
            System.out.println("D不是最大值");
        else if( D < B )
                System.out.println("D不是最大值");
            else if( D < C )
                    System.out.println("D不是最大值");
                else
                    System.out.println("D是最大值");
    }
}

switch[編輯]

switch語句就像一個多向開關,可以根據判斷條件選擇任意一個通路。

switch的條件必須是byte、int、short或者char。

常用結構如下實例:

public class Exercise {
    public static void main(String args[]){
        char favour = 'r';
        switch(favour){
        case 'r' : System.out.println("我喜欢红色");break;
        case 'b' : System.out.println("我喜欢蓝色");break;
        case 'g' : System.out.println("我喜欢绿色");break;
        case 'y' : System.out.println("我喜欢黄色");break;
        case 'w' : System.out.println("我喜欢白色");break;
        default  : System.out.println("我都不喜欢");break;
        }
    }
}

執行結果為

我喜欢红色

請注意「break」,如果末尾沒有break,那麼程序將會從符合條件的那一行繼續執行接下來的所有行。也就是說,case是一個起始標記,而停止標誌則是break。在第一個符合條件的case和下一個break之間的內容將被執行。

若沒有break:

public class Exercise {
    public static void main(String args[]){
        char favour = 'y';
        switch(favour){
        case 'r' : System.out.println("我喜欢红色");
        case 'b' : System.out.println("我喜欢蓝色");
        case 'g' : System.out.println("我喜欢绿色");
        case 'y' : System.out.println("我喜欢黄色");
        case 'w' : System.out.println("我喜欢白色");
        default  : System.out.println("我都不喜欢");
        }
    }
}

執行結果為

我喜欢黄色
我喜欢白色
我都不喜欢

若沒有符合條件的case,則執行default。

其實,凡是能用switch實現的功能,用if-else也能實現。但在一些情況中,使用switch會更簡潔明了。