分支语句——switch-case
1.switch格式
switch(表达式)
{case 常量1:执行语句1;//break;(根据情况决定是否要)case 常量2:执行语句2//break;...default:执行语句n;//break;
}
2.switch语句说明
1.根据switch表达式中的值,依次匹配各个case中的常量。一旦匹配成功,则进入相应case结构中,调用其执行语句。当调用完执行语句后,则任然继续向下执行其他case结构中的执行语句,直到遇到break关键字或此switch-case结构末尾结束为止。
2.break,可以使用在switch-case结构中,表示一旦执行到此关键字,就跳出switch-case结构
3.switch结构中的表达式,只能是如下6种数据类型之一:
byte、short、char、int、枚举类型(JDK5.0新增)、String类型(JDK7.0新增)
4.case之后只能声明常量。不能声明范围。
5.break关键字是可选的。
6.default:相当于if-else结构中的else.
defaul结构是可选的,而且位置是灵活的
7.如果switch-case结构中的多个case的执行语句相同,则可以考虑进行合并
8…凡是可以使用switch-case的结构,都可以转换为if-else。反之,不成立。
9.写分支结构时,发现既可以使用switch-case(同时switch中表达式的取值情况不太多),又可以使用if-else时,优先选择使用switch-case。原因:switch-case执行效率稍高。
3.练习
1.使用 switch 把小写类型的 char型转为大写。只转换 a, b, c, d, e. 其它的输
出 “other”。
提示:String word = scan.next(); char c = word.charAt(0); switch©{}
import java.util.Scanner;class SwitchCaseTest1
{public static void main(String[] args){//练习1Scanner scanner = new Scanner(System.in);System.out.println("请输入一个字符");String word = scanner.next();char c = word.charAt(0);switch(c){case 'a':System.out.println("A");break;case 'b':System.out.println("B");break;case 'c':System.out.println("C");break;case 'd':System.out.println("D");break;case 'e':System.out.println("E");break;default:System.out.println("other");}}
}
2.对学生成绩大于60分的,输出“合格”。低于60分的,输出“不合格”。
说明:如果switch-case结构中的多个case的执行语句相同,则可以考虑进行合并
class SwitchCaseTest2
{public static void main(String[] args){int score = 78;switch(score / 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;}switch(score / 60){case 0:System.out.println("不及格");break;case 1:System.out.println("及格");break;}}
}
3.根据用于指定月份,打印该月份所属的季节。
3,4,5 春季 6,7,8 夏季 9,10,11 秋季 12, 1, 2 冬季
class SwitchCaseTest3
{public static void main(String[] args){int month = 12;switch(month){case 3:case 4:case 5:System.out.println("春季");break;case 6:case 7:case 8:System.out.println("夏季");break;case 9:case 10:case 11:System.out.println("秋季");break;case 12:case 1:case 2:System.out.println("冬季");break;}}
}
4.编写程序:从键盘上输入2019年的“month”和“day”,要求通过程序
输出输入的日期为2019年的第几天。
class SwitchCaseTest4
{public static void main(String[] args){Scanner scan = new Scanner(System.in);System.out.println("请输入2019年的月份");int month = scan.nextInt();System.out.println("请输入2019年的天");int day = scan.nextInt();int sumDays = 0;switch(month){case 12:sumDays += 31;case 11:sumDays += 30;case 10:sumDays += 31;case 9:sumDays += 30;case 8:sumDays += 31;case 7:sumDays += 31;case 6:sumDays += 30;case 5:sumDays += 31;case 4:sumDays += 30;case 3:sumDays += 31;case 2:sumDays += 29;case 1:sumDays += day;}System.out.println("天数是:" + sumDays);}
}
5.从键盘分别输入年、月、日,判断这一天是当年的第几天
注:判断一年是否是闰年的标准:
1)可以被4整除,但不可被100整除
或 2)可以被400整除
import java.util.Scanner;class SwitchCaseExer
{public static void main(String[] args){Scanner scan = new Scanner(System.in);System.out.println("请输入年");int year = scan.nextInt();System.out.println("请输入月份");int month = scan.nextInt();System.out.println("请输入天");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://判断year是否是闰年if(year % 4 == 0 && year % 100 != 0 || year % 400 == 0){sumDays += 29;}else{sumDays += 28;}case 2:sumDays += 31;case 1:sumDays += day;}System.out.println("天数是:" + sumDays);}