控制流语句的类型有判断语句和循环语句
判断语句有if-else语句 switch-case语句
循环语句有while循环 do-while循环 for 循环
•switch-case 语句可用于替换 if-elseif 语句
•在表达式可以得出多个值的情况下,使用此语句
•使用 switch-case语句会带来更好的效果
语法:
switch(表达式){
case 1:
操作1 的语句;
//break;
case 2:
操作2 的语句;
//break;
….
case n :
操作n 的语句;
//break;
default:
默认语句;
}
()里的表达式,在
Jdk1.7之前,()中的结果只能是<=int的数据
Jdk1.7及之后,()中的结果也可以是String
switch 语句中的变量类型可以是: byte、short、int 或者 char。从 Java SE 7 开始,switch 支持字符串类型了,同时 case 标签必须为字符串常量或字面量。
下面用switch-case语句来判断某年某月的月份的天数
public class Year{ public static void main(String [] args){ //声明一个整数变量month,存储一个月份的值初始化为2017 //再声明一个变量year,存储年份的值初始化为10 int year=2017; int month=12; //以下月份不含有二月份,可以不考虑闰年 //1 3 5 7 8 10 月份为大月,有31天, //4 6 9 11 月份为小月,有30天 if(month>=1&&month<=12) { int days=31; switch(month){ case 4: case 6: case 9: case 11: days=30; break; case 2: days=28; if((year%4==0&&year%100!=0)||(year%400==0)) days=29; break; } System.out.println(month+"月有"+days+"天"); }else System.out.println("请输入一个有效的月份"); } }
这里说一下break:当遇到 break 语句时,switch 语句终止。程序跳转到 switch 语句后面的语句执行。case 语句不必须要包含 break 语句。如果没有 break 语句出现,程序会继续执行下一条 case 语句,直到出现 break 语句。如果没有break语句,就会继续执行剩下的语句,导致输出错误。我们可以通过如下的代码来看一下
switch(month){ case 1: case 3: case 5: case 7: case 8: case 10: //控制台输出 System.out.println(month +"月有31天"); break; //break语句必须有,否则会继续执行下列语句 case 4: case 6: case 9: case 11: System.out.println(month +"月有30天"); break; case 2: System.out.println(month +"月有29天"); }
若没有break;如果这个月是七月,那么输出“7月有31天”紧接着会输出“7月有30天”“7月有29天”很明显是错误的
使用switch-case来解决这道问题,两种方法来对比一下
/*
2、用一个变量来表示中奖的等级,比如1,2,3,4
如果是1等奖,打印出买房、买车、买电脑、买手机
如果是2等奖,打印买车、买电脑、买手机
如果是3等奖,打印买电脑、买手机
如果是4等奖,打印买手机
其他,打印可惜未中奖,下次再努力。
public class Price{ public static void main(String [] args){ int price=2; switch(price){
case 1: System.out.println(price+": 买房,买车,买电脑,买手机"); break; case 2: System.out.println(price+": 买车,买电脑,买手机"); break; case 3: System.out.println(price+": 买电脑、买手机"); break; case 4: System.out.println(price+": 买手机"); break; default : System.out.println("可惜未中奖,下次再努力。"); } } }
public class Price{ public static void main(String[] args){ int grade=1; switch(grade){ //任何一个case等值比较相同后,通道就打通, //后续代码会依次执行,直到碰到一个break,才从Switch中退出 case 1: System.out.print("买房 "); case 2: System.out.print("买车 "); case 3: System.out.print("买电脑 "); case 4: System.out.println("买手机 "); break; default: System.out.println("可惜未中奖,下次再努力。"); break; } } }
这题中的输出条件具有一定的关系,利用了关系来处理输出条件