switch 多分支语句,及其流程图,和if的对比和运行机制

switch : 在编程中常见的问题就是检测一个变量是否符合某个条件,如果条件不符合,再用另一个值来检测,以此类推.当然也可以用if语句来完成也可以,如输入月份判断一年的季节,代码如下:
public static void main(String[] args) {
    System.out.println("请输入一个月份:");
    Scanner scanner = new Scanner(System.in);
    int luna = scanner.nextInt();
    if(luna==3||luna==4||luna==5){
        System.out.println("春季");
    }
    if(luna==6||luna==7||luna==8){
        System.out.println("夏季");
    }
    if(luna==9||luna==10||luna==11){
        System.out.println("秋季");
    }
    if(luna==12||luna==1||luna==2){
        System.out.println("冬季");
    }
}

这个程序显得比较笨重,而且要是我要对单一月份进行特殊的输出的时候,就会改掉一块if语句,像这种要实现"多选一"的情况就应该用switch语句来进行判断,代码如下:
public static void main(String[] args) {
    System.out.println("请输入一个月份:");
    Scanner scanner = new Scanner(System.in);
    int luna = scanner.nextInt();
   switch(luna){
       case 3 :
       case 4 :
       case 5 :
           System.out.println("春季");
           break;
       case 6 :
           System.out.println("春季的开头");
       case 7 :
       case 8 :
           System.out.println("夏季");
           break;
       case 9 :
       case 10 :
       case 11 :
           System.out.println("秋季");
           break;
       case 12 :
       case 1 :
       case 2 :
           System.out.println("冬季");
           break;
           default:
               System.out.println("输入的月份不符合规则!");
}
}

如此,我要对三月进行一个特殊的输出,我只要在它,对应的 case 后面加上我的改动就可以了,这里注意 break 的用法! 在switch 结构中不是每一个 case后面都要跟break 的,
这里我先来说一说 switch的运行机制: 将整个switch结构看成是一个博物馆 我们的现在手上的 Luna 这个变量就是我们的门票,我们要通过门票进入我们我们对应的房间,然后一间一间的去游览我们的展厅,
break 相当于展览馆的保安,你碰到保安代表后面的门票你并没有购买,然后你就要被保安请出去了,要是你的门票并没有找到对应的展馆,你就会进入一个 特殊的展馆 default ; 如图

注意,switch 语句的中表达式的的值必须是整形,字符型,字符串型,或常量型 1 ~ n 必须也是整形,字符型或字符串型. default 语句为可选的,如果它不存在,且 switch 语句中表达式的值不予任何 case 的常量值相同,switch 则不做任何处理!

switch 的 流程图:

                                              

作者:唐平

时间:2018.4.19



没有更多推荐了,返回首页