结构
switch(表达式){
case 常量1:
语句1;
// break;
case 常量2:
语句2;
// break;
… …
case 常量N:
语句N;
// break;
default:
语句;
// break;
}
说明:
1.根据switch中的值,依次匹配各个case中的常量,一旦匹配成功,则进入相应case结构中,调用其执行语句,当调用完执行语句以后,则任然继续向下执行其他case结构中的执行语句,直到遇到break关键字或此switch-case结构末尾结束。
2.break,可以使用在switch-case结构中,表示一旦执行到此关键字,就跳出switch-case结构
3.switch结构中的表达式,只能是如下的六种数据类型之一:byte,short,char,int,枚举类型(JDK5.0新增),String类型(JDK7.0新增)
4.case之后只能是声明常量,不能声明范围
5.break关键字是可加可不加的
6.default:相当与if-else结构中的else(default是可加可不加的,而且位置是灵活的)
例题
public class SwitchCase { public static void main(String[] args){ int number = 2; switch(number){ case 0: System.out.println("zero"); break;//如果没有break关键字,继续向下执行 case 1: System.out.println("one"); break; case 2: System.out.println("two"); break; case 3: System.out.println("three"); break; default: System.out.println("other"); } } }
public class SwitchCase { public static void main(String[] args){ 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; } } }
7.如果switch-case结构中的多个case的执行语句相同,则可以考虑进行合并
//例题:对学生成绩大于60分的,输出“合格”低于60分的输出“不合格” public class SwitchCase { public static void main(String[] args){ int score = 80; switch(score/10){ case 0: case 1: case 2: case 3: case 4: case 5: case 6: System.out.println("不合格"); break; case 7: case 8: case 9: case 10: System.out.println("合格"); } //更优解决方案 int score =80; switch(score/60){ case = 0: System.out.println("不合格"); break; case = 1: System.out.println("合格"); break; } } }
//例题:从键盘上输入2021年的“month”和“day”,要求通过程序输出输入的日期为2021年的第几天 import java.util.Scanner; public class SwitchCase { public static void main(String[] args){ Scanner scan = new Scanner(System.in); System.out.println("请输入2021年的月份:"); int month = scan.nextInt(); System.out.println("请输入2021年的day:"); int day = scan.nextInt(); //定义一个变量来保存总天数 int sumDays = 0; switch(month){ case 12: sumDays += 30; case 11: sumDays += 31; case 10: sumDays += 30; case 9: sumDays += 31; case 8: sumDays += 31; case 7: sumDays += 30; case 6: sumDays += 31; case 5: sumDays += 30; case 4: sumDays += 31; case 3: sumDays += 28; case 2: sumDays += 31; case 1: sumDays += day; System.out.println("2021年" + month +"月" + day + "日" + "是当年的第" + sumDays + "天"); } } }