控制流语句的类型有判断语句和循环语句
判断语句有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;
}
}
}
这题中的输出条件具有一定的关系,利用了关系来处理输出条件