跳转到内容

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会更简洁明了。