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

猜你喜欢

转载自blog.csdn.net/qq947089960/article/details/81435279