switch case语句
循环结构
switch(变量){
case 常量1:
执行语句1;
//break;
case 常量2:
执行语句2;
//break;
case 常量3:
执行语句3;
//break;
…
default:
执行语句n;
//break;
}
特别说明一
- 根据switch中的表达式或变量的值,去依次匹配case中的常量,一旦满足,则进入执行相应的case的执行 语句。执行完此case语句以后会依次进入下面的其他case的语句中去执行,直到switch-case结构结束或遇到break结束。
- switch中的表达式或变量只能是如下的类型:byte\short\char\int\枚举类(jdk5.0新增)\String(jdk7.0新增)
- switch-case适用于case情况不多的时候。
- default的作用相当于if-else中的else。default是可选的,而且位置灵活的。
- switch-case 一定可以转换成if-else。反之,不成立。
- 如果一个实际问题中,既可以使用switch-case,又可以使用if-else。建议使用switch-case。因为:效率稍高
代码练习一
错误应用一
public class SwitchTest {
public static void main(String[] args) {
/*
boolean isHandsome = true;
switch(isHandsome){ switch中的表达式或变量只能是如下的类型:
byte\short\char\int\枚举类(jdk5.0新增)\String(jdk7.0新增)
case true:
System.out.println("帅");
break;
case false:
System.out.println("丑");
break;
default:
System.out.println("输入有误");
}
*/
错误应用二
int age = 22;
switch(age){
case age < 18: //case 中只能是常量
System.out.println("未成年");
break;
case age >= 18:
System.out.println("成年");
break;
default:
System.out.println("输入有误");
}
正确练习一
String season = "summer";
switch (season) {
case "spring":
System.out.println("春暖花开");
break;
case "summer":
System.out.println("夏日炎炎");
break;
case "autumn":
System.out.println("秋高气爽");
break;
case "winter":
System.out.println("冬雪皑皑");
break;
default:
System.out.println("季节输入有误");
break;
}
特别说明二
如果多个case的执行语句相同,则可以合并。
代码练习二
/*
对学生成绩大于60分的,输出“合格”。低于60分的,输出“不合格”
使用switch-case完成
说明:
如果多个case的执行语句相同,则可以合并。
*/
import java.util.*;
public class SwitchTest1 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("请输入成绩");
int velu = scan.nextInt();
switch (velu/10) {
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
System.out.println("不合格!");
break;
case 6:
case 7:
case 8:
case 9:
case 10:
System.out.println("合格!");
break;
}
}
}
代码练习三
/*
编写程序:从键盘上输入2019年的“month”和“day”,要求通过程序输出输入的日期为2019年的第几天。
5月4号:
31 + 28 + 31 + 30 + 4
说明:
在switch-case中,根据实际情况,也可能不要加break关键字。
拓展:
从键盘分别输入年、月、日,判断这一天是当年的第几天
注:判断一年是否是闰年的标准:
1)可以被4整除,但不可被100整除
或
2)可以被400整除
*/
import java.util.*;
public class SwitchTest2 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("请输入年、月、日");
System.out.println("年:");
int year = scan.nextInt();
System.out.println("月份:");
int mouth = scan.nextInt();
System.out.println("日期:");
int day = scan.nextInt();
int sum = 0 ;
switch(mouth) {
case 12:
sum += 30;
case 11:
sum += 31;
case 10:
sum += 30;
case 9:
sum += 31;
case 8:
sum += 31;
case 7:
sum += 30;
case 6:
sum += 31;
case 5:
sum += 30;
case 4:
sum += 31;
case 3:
if((year % 4 ==0 && year % 100 !=0) ||year % 400 ==0) {
sum += 29;
}else {
sum += 28;
}
case 2:
sum += 31;
case 1:
sum += day;
}
System.out.println(mouth + "月" + day + "日,是今年第" + sum + "天");
}