1.switch多选结构
使用switch语句来选择要执行的代码块,与if条件分支语句比较类似。
【语法结构】
switch (表达式) {
case 常量1:
语句序列;
[break;]
case 常量2:
语句序列;
[break;]
case 常量3:
语句序列;
[break; ]
……
[default:]
默认语句;
[break;]
}
【工作原理】
switch语句会根据表达式的值从相匹配的case标签处开始执行,一直执行到break语句处或者是switch语句的末尾。与任一case值不匹配,则进入default语句(如果存在default语句的情况)。
【注意事项】
-
switch()中的数据类型只能为:byte、short、int、char、String(JDK7)和枚举(后面会学习)。
-
case后面必须是常量,并且常量的类型应该和switch()中的数据类型保持一致。
并且不允许有重复的case值。
-
break用于跳出switch语句,根据需求我们我们可以省略break,
如果没有break, 一旦进入case,导致后面的所有case都能进入, 直到遇到break或switch结束。
-
default可以省略,但是最好不要省略,除非case能匹配所有的可case和default的是无序的,不过default只能最后执行或不执行。
【随堂练习】
1、 输入一个整数,对应的显示出星期几, 例如: 输入“1”,输出为“星期一” 。
2、 接收一个人的成绩, 如果成绩为: 90(包含)到100(包含)输出优秀, 70(包含)到90输出良好, 60(包含)到70输出及格, 60分以下输出不及格。
/**
* 思路分析:
* 合法的成绩区间所对应的等级:
* [90, 100] --> [90, 100]/10 --> 结果:9或10
* [70, 90) --> [70, 90)/10 --> 结果:7或8
* [60, 70) --> [60, 70)/10 --> 结果:6
* [0, 60) --> [0, 60)/10 --> 结果:0、1、2、3、4、5 --> 不及格
* 把获得的成绩score/10,根据获得的整数值得到对应的等级。
* score / 10,结果:9或10 则输出“优秀”
* score / 10,结果:7或8 则输出“良好”
* score / 10,结果:6 则输出“及格”
* score / 10,结果:0、1、2、3、4、5 则输出“不及格”
* 实现步骤:
* a)通过Scanner获得学生成绩,假设使用score变量保存。
* b)判断学生成绩是否合法,合法成绩区间:[0, 100]
* c)如果学生成绩合法,则根据学生成绩输出对应等级。
*/
public class SwitchTest02 {
public static void main(String[] args) {
// 1.通过Scanner获得学生成绩
Scanner input = new Scanner(System.in);
System.out.print("请输入学生成绩:");
int score = input.nextInt();
// 2.判断学生成绩是否合法,合法成绩区间:[0, 100]
if(score < 0 || score > 100) {
System.out.println("成绩输入有误,请重新输入!");
}
else { // 合法情况,score的范围:[0, 100]
// 3.如果学生成绩合法,则根据学生成绩输出对应等级。
switch(score/10) {
case 10:
case 9:
System.out.println("优秀");
break;
case 8:
case 7:
System.out.println("良好");
break;
case 6:
System.out.println("及格");
break;
default:
System.out.println("不及格");
}
}
}
}
3、 查询水果的价格,根据输入水果(fruit)的名字,输出对应的水果的价格,例如苹果6块/斤,香蕉3元/斤,榴莲20元/斤,西瓜0.8元/斤。
public class SwitchTest01 {
public static void main(String[] args) {
// 1.通过Scanner获得水果名字
Scanner input = new Scanner(System.in);
System.out.print("请输入水果名字:");
String fruit = input.nextLine();
// 2.根据水果名字,输出对应的水果的价格
switch(fruit) {
case "苹果":
System.out.println(fruit + "6元/斤");
break;
case "香蕉":
System.out.println(fruit + "3元/斤");
break;
case "榴莲":
System.out.println(fruit + "20元/斤");
break;
case "西瓜":
System.out.println(fruit + "0.8元/斤");
break;
default:
System.out.println("本店还没进货,下次再来!");
break;
}
}
2.switch和if的区别
switch:建议判断固定值的时候用。
if:建议判断区间或范围的时候用,对运算结果是boolean类型的表达式进行判断。
注意:用switch能做的,用if都能做,但反过来则不行。
ps:如需最新的免费文档资料和教学视频,请添加QQ群(627407545)领取。