switch分支结构
- switch分支结构
- 1.基本语法
- 2.说明
- 3.流程图
- 4.案例
- 5.注意事项
- 6.练习
- 7.switch和if的比较
switch分支结构
1.基本语法
switch(表达式){
case 常量1: //当...
语句块1;
break;
case 常量2:
语句块2;
break;
...
case 常量n:
语句块n;
break;
default:
default语句块;
break;
}
在Java中只要是一个表达式就有值返回
2.说明
1)switch关键字,表示switch分支
2)表达式 对应一个值
3)case 常量1 :当表达式的值等于常量1,就执行 语块1
4)break :表示退出switch
5)如果和case 常量1 匹配,就执行语块1,如果没有匹配,就继续匹配 case 常量2
6)如果一个都没有匹配上,执行default
3.流程图
如果等于常量1,执行语句块1,若没有break则会执行语句块2,还没有break继续执行语句块3(穿透)
4.案例
编写一个程序,该程序可以接收一个字符,比如a,b,c,d,e,f,g
a表示星期一,b表示星期二…
根据用户的输入显示相应的信息,要求使用switch语句完成
import java.util.Scanner;//表示把java.util包下的Scanner类导入
public class comment00{
//编写一个main方法
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("请输入");
char c1 = sc.next().charAt(0);
//在Java中只要是一个表达式就有值返回
switch(c1) {
case 'a' :
System.out.println("今天星期一");
break;
case 'b' :
System.out.println("今天星期二");
break;
case 'c' :
System.out.println("今天星期三");
break;
//.....
default:
System.out.println("输入不正确");
}
System.out.println("退出switch,继续执行程序");
}
}
5.注意事项
1)表达式数据类型应和case 后的常量类型一致,或者是可以自动转成可以相互比较的类型,比如输入的是字符,而常量是int(字符型可以自动转换成int型)
2)switch(表达式)中表达式的返回值必须是:byte , short , int , char , enum[枚举] , String
3)case子句中的值必须是常量或常量表达式,而不能是变量
4)default子句是可选的,当没有匹配的case时,执行default
5)break语句用来在执行完一个case分支后使程序跳出switch语句块;如果没有写break,程序会顺序执行到switch结尾,除非遇到break;
6.练习
对于成绩大于60分的,输出“合格”,低于60分的,输出“不合格”。输入的成绩不得大于100
1)临时变量temp
import java.util.Scanner;//表示把java.util包下的Scanner类导入
public class comment00{
//编写一个main方法
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("请输入成绩");
double temp = sc.nextDouble(); //用一个临时变量temp来接收键盘输入的成绩
int grade = 0;
if(temp >= 0 && temp < 60){
grade = 1;
}
else if(temp >= 60 && temp <=100){
grade = 2;
}
else{
System.out.println("成绩不对重新输入");
}
switch(grade) {
case 1 :
System.out.println("不合格");
break;
case 2 :
System.out.println("合格");
break;
}
}
}
2)强制类型转换(int)成绩 / 60
import java.util.Scanner;
public class comment01{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("请输入成绩:");
double grade = sc.nextDouble();
if(grade >= 0 && grade <= 100){
switch((int)(grade / 60)){
case 0 :
System.out.println("不合格");
break;
case 1 :
System.out.println("合格");
break;
}
}
else{
System.out.println("成绩输入错误,请输入成绩在0-100内");
}
}
}
根据指定月份,打印该月份所属的季节。3,4,5春季;6,7,8夏季;9,10,11秋季;12,1,2冬季
import java.util.Scanner;
public class comment01{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("请输入月份(1-12):");
int month = sc.nextInt();
//case穿透
switch(month){
case 1 :
case 2 :
case 12 :
System.out.println("冬季");
break;
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;
default :
System.out.println("输入有误,请输入1-12的月份");
}
}
}
7.switch和if的比较
1)如果判断的具体值不多,而且符合byte、short、int、char、enum、String这6种类型。虽然两个语句都可以使用,建议使用switch语句。
2)其他情况:对区间判断,对结果为boolean类型判断,使用if ,if的适用范围更广。