switch

switch(变量){
case 值1:

case 值2:

case 值3:

default:

}
1.根据变量的值,选择相应的case去判断,一旦满足case条件,就执行case的相应语句。如果没有break或者已经
到结尾的话,会继续执行其下的case语句。
2.default:是可选的,而且位置是灵活的。
3.变量可以是哪些类型?char byte short int 枚举 String(jdk1.7)
4.case 条件:其中条件只能是值,不能是取值范围!

例1:输出春天

class TestSwitch2 {
    public static void main(String[] args) {

        String season = "SPRING";

        switch (season) {
        case "SPRING":
            System.out.println("春天");
            break;
        case "SUMMER":
            System.out.println("夏天");
            break;
        case "AUTUMN":
            System.out.println("秋天");
            break;
        case "WINTER":
            System.out.println("冬天");
            break;
        default:
            System.out.println("输入有误");
            break;

        }

    }
}

例2:对学生成绩大于60分的,输出“合格”。低于60分的,输出“不合格”。

说明:
1.当多个case语句处理的语句块一致时,可以统一来书写
2.一定情况下switch-case与if-else之间可以相互转换。

class TestSwitch3 {
    public static void main(String[] args) {
        int score = 67;
        if (score >= 60) {
            System.out.println("及格");
        } else {
            System.out.println("不及格");
        }
        /*
         * switch(score){ case 100: ... case 0: default: }
         */
        switch (score / 10) {
        case 10:
        case 9:
        case 8:
        case 7:
        case 6:
            System.out.println("及格");
            break;
        case 5:
        case 4:
        case 3:
        case 2:
        case 1:
        case 0:
            System.out.println("不及格");
            break;
        default:
            System.out.println("输入有误");
            break;

        }

    }
}

例3:从键盘上输入2014年的“month”和“day”,要求通过程序输出输入的日期为2014年的第几天

import java.util.Scanner;

class TestSwitch4 {
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        System.out.println("请输入月份:");
        int month = s.nextInt();
        System.out.println("请输入日期:");
        int day = s.nextInt();

        int sum = 0;// 用来记录month月day日是2014年第几天
        // 使用switch-case
        switch (month) {

        case 12:
            sum += 30;// 30:十一月份的总天数
        case 11:
            sum += 31;
        case 10:
            sum += 30;
        case 9:
            sum += 31;
        case 8:
            sum += 31;
        case 7:
            sum += 30;
        case 6:
            sum += 31;
        case 5:
            sum += 30;
        case 4:
            sum += 31;
        case 3:
            sum += 28;
        case 2:
            sum += 31;// 31:是一月份的天数
        case 1:
            sum += day;

        }

        System.out.println(sum);
    }
}

如果不加break,代码会从那开始执行,一直执行到最后,所以不符合case的语句也会被执行。

例4:从键盘分别输入年、月、日,判断这一天是当年的第几天

import java.util.Scanner;
class TestYearMonthDay{
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        System.out.println("请输入年份:");
        int year = s.nextInt();
        System.out.println("请输入月份:");
        int month = s.nextInt();
        System.out.println("请输入日期:");
        int day = s.nextInt();

        int sum = 0;//用来记录year年month月day日是year年第几天
        //使用switch-case
        switch(month){
        
        case 12:
            sum += 30;//30:十一月份的总天数
        case 11:
            sum += 31;
        case 10:
            sum += 30;
        case 9:
            sum += 31;
        case 8:
            sum += 31;
        case 7:
            sum += 30;
        case 6:
            sum += 31;
        case 5:
            sum += 30;
        case 4:
            sum += 31;
        case 3:
            if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0){
                sum += 29;
            }else{
                sum += 28;
            }
        case 2:
            sum += 31;//31:是一月份的天数
        case 1:
            sum += day;
    
        }
        System.out.println(sum);
    }
}
原文地址:https://www.cnblogs.com/wangmengge/p/8630899.html