switch(变量){
case 值1:
case 值2:
case 值3:
default:
}
1.根据变量的值,选择相应的case去判断,一旦满足case条件,就执行case的相应语句。如果没有break或者已经
到结尾的话,会继续执行其下的case语句。
2.default:是可选的,而且位置是灵活的。
3.变量可以是哪些类型?char byte short int 枚举 String(jdk1.7)
4.case 条件:其中条件只能是值,不能是取值范围!
例1:输出春天
class TestSwitch2 { public static void main(String[] args) { String season = "SPRING"; 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; } } }
例2:对学生成绩大于60分的,输出“合格”。低于60分的,输出“不合格”。
说明:
1.当多个case语句处理的语句块一致时,可以统一来书写
2.一定情况下switch-case与if-else之间可以相互转换。
class TestSwitch3 { public static void main(String[] args) { int score = 67; if (score >= 60) { System.out.println("及格"); } else { System.out.println("不及格"); } /* * switch(score){ case 100: ... case 0: default: } */ switch (score / 10) { case 10: case 9: case 8: case 7: case 6: System.out.println("及格"); break; case 5: case 4: case 3: case 2: case 1: case 0: System.out.println("不及格"); break; default: System.out.println("输入有误"); break; } } }
例3:从键盘上输入2014年的“month”和“day”,要求通过程序输出输入的日期为2014年的第几天
import java.util.Scanner; class TestSwitch4 { public static void main(String[] args) { Scanner s = new Scanner(System.in); System.out.println("请输入月份:"); int month = s.nextInt(); System.out.println("请输入日期:"); int day = s.nextInt(); int sum = 0;// 用来记录month月day日是2014年第几天 // 使用switch-case switch (month) { case 12: sum += 30;// 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: sum += 28; case 2: sum += 31;// 31:是一月份的天数 case 1: sum += day; } System.out.println(sum); } }
如果不加break,代码会从那开始执行,一直执行到最后,所以不符合case的语句也会被执行。
例4:从键盘分别输入年、月、日,判断这一天是当年的第几天
import java.util.Scanner; class TestYearMonthDay{ public static void main(String[] args) { Scanner s = new Scanner(System.in); System.out.println("请输入年份:"); int year = s.nextInt(); System.out.println("请输入月份:"); int month = s.nextInt(); System.out.println("请输入日期:"); int day = s.nextInt(); int sum = 0;//用来记录year年month月day日是year年第几天 //使用switch-case switch(month){ case 12: sum += 30;//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;//31:是一月份的天数 case 1: sum += day; } System.out.println(sum); } }