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