switch分支结构
switch (表达式){
case " ":
....;
break; //没有它的话 满足这个条件执行当前条件即之后条件
}
例:输入一个字符 a~g 分别表示周一到周日
public class Main{
public static void main(String[] args) {
Scanner sc=new Scanner (System.in);
String s=sc.next();
switch(s){
case "a":
System.out.println("周一");
break;
case "b":
System.out.println("周er");
break;
case "c":
System.out.println("周san"); //如果没有break,输入为c的话,输出结果为周三周四到周日
break;
case "d":
System.out.println("周si");
break;
case "e":
System.out.println("周wu");
break;
case "f":
System.out.println("周liu");
break;
case "g":
System.out.println("周ri");
break;
}
}
}
细节部分
- 表达式数据类型,应和case 后的常量类型一致,或者可以自动转成可以相互比较的类型,比如输入的是字符,而常量是int
- switch (表达式) 中表达式的返回值必须是:byte,short,int,char,enum,String
- case 字句中的值必须是常量或者是常量表达式,而不能是变量
- default可写可不写
- break语句用来执行一个case 分支后使程序跳出switch语句块,如果没有写break,程序就会顺序执行到switch 结尾,除非中途遇到break;
switch 练习题:
1.输入学生成绩,成绩大于等于60输出合格,小于60不合格(成绩的值在0~100之间),要求用switch 语句实现
解题思路:因为成绩以60分开,是一个数据段,怎么将这个数据段变为一个常量呢?我们将它/60并将类型转为int,如果合格,那么值为1 ,否则为0
public class Main{
public static void main(String[] args) {
Scanner sc=new Scanner (System.in);
double s=sc.nextDouble();
if(s>=0 && s<=100){
switch((int)(s/60)){
case 0:
System.out.println("不合格");
break;
case 1:
System.out.println("合格");
break;
}
}
}
}
2.根据指定的月份,打印该月份所属的季节。3,4,5春,6,7,8夏,9,10,11秋,12,1,2冬(使用穿透)
public class Main{
public static void main(String[] args) {
Scanner sc=new Scanner (System.in);
int m=sc.nextInt();
switch(m){
case 3:
case 4:
case 5:
System.out.println("spring");
break;
case 6:
case 7:
case 8:
System.out.println("summer");
break;
case 9:
case 10:
case 11:
System.out.println("autumn");
break;
case 12:
case 1:
case 2:
System.out.println("winter");
break;
}
}
}