2.5.3 switch语句
多分支除了前面讲的 if 嵌套,其实还有种方法,用 switch 语句。
例:在程序中使用数字1~7表示星期一到星期天,如果想根据输入的数字输出对应中文格式的星期值:
- 如果等于1,则输出星期一
- 如果等于2,则输出星期二
- 如果等于3,则输出星期三
- 如果等于4,则输出星期四
- 如果等于5,则输出星期五
- 如果等于6,则输出星期六
- 如果等于7,则输出星期天
switch语句的格式:
switch(表达式) {
case 值1: 语句体1; break;
case 值2: 语句体2; break;
… …
case 值n: 语句体n; break;
default:语句体n+1;
}
switch后面小括号里的表达式,一般是一个整数或字符,这个值会逐个与 case 后面的常量值进行比较,如果相等,则执行那个 case 的冒号后面的语句,直到遇到 break 就跳出switch结构;如果不相等,就继续与下一个 case比较;如果直到最后都没有相等的,就执行 default 后面的语句。
Scanner sc=new Scanner(System.in);
System.out.print("请输入一个1-7的整数:");
int num=sc.nextInt();
switch(num) {
case 1:System.out.println("星期一");break;
case 2:System.out.println("星期二");break;
case 3:System.out.println("星期三");break;
case 4:System.out.println("星期四");break;
case 5:System.out.println("星期五");break;
case 6:System.out.println("星期六");break;
case 7:System.out.println("星期天");break;
default:System.out.println("输入错误!");
}
注意:
- 用于匹配的表达式的数据类型可以是:byte、short、int或者char。从 Java SE 7 开始,switch 支持字符串 String 类型了。
- switch 语句可以拥有多个 case 语句。每个 case 后面跟一个要比较的值和冒号。
- case 语句中的值的数据类型必须与变量的数据类型相同,而且只能是常量或者字面常量。
- 当变量的值与 case 语句的值相等时,那么 case 语句之后的语句开始执行,直到 break 语句出现才会跳出 switch 语句。
- 当遇到 break 语句时,switch 语句终止。程序跳转到 switch 语句后面的语句执行。case 语句不必须要包含 break 语句。如果没有 break 语句出现,程序会继续执行下一条 case 语句,直到出现 break 语句。
- switch 语句可以包含一个 default 分支,该分支一般是 switch 语句的最后一个分支(可以在任何位置,但建议在最后一个)。default 在没有 case 语句的值和变量值相等的时候执行。default 分支不需要 break 语句。
有些时候,也会故意不写 break来达成一些目的。比如上面的例子,如果希望输入1-5时,输出“工作日”,输入6-7时,输出“休息日”,那么程序可以修改成:
Scanner sc=new Scanner(System.in);
System.out.print("请输入一个1-7的整数:");
int num=sc.nextInt();
switch(num) {
case 1:
case 2:
case 3:
case 4:
case 5:System.out.println("工作日");break;
case 6:
case 7:System.out.println("休息日");break;
default:System.out.println("输入错误!");
}