引入概念:之前写代码,代码都是默认从上到下依次执行代码,在现实开发过程中肯定会根据不同情况做不同判断,那么能不能通过不同的条件判断执行对应的代码,而不是从上到下依次执行
switch(选择语句)的基本使用
1:格式:
switch(变量){
case 常量值2:
执行语句2;
break;
case 常量值3:
执行语句3;
break;
case 常量值4:
执行语句4;
break;
case 常量值5:
执行语句5;
break
...
default:
执行语句n;
break;
}
2:执行流程:
用变量值与case常量值匹配,匹配成功则执行对应语句,都不匹配则执行default语句
3:break关键字:
break作用:结束整个switch语句,防止case穿透
4:数据类型限制:支持byte、short、int、char、枚举和String类型,不支持float/double(因精度问题)
package Random;
import java.util.Scanner;
public class Demo01 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个整数:");
int data = sc.nextInt();
switch (data){
case 1:
System.out.println("床前明月光");
break;
case 2:
System.out.println("疑是地上霜");
break;
case 3:
System.out.println("举头望明月");
break;
case 4:
System.out.println("低头思故乡");
break;
default:
System.out.println("下面没有了");
break;
}
}
}
case的穿透性
1:现象特征:当case分支缺少break时,程序会继续执行后续case的代码,知道遇到break或switch执行完成
package Random;
import java.util.Scanner;
public class Demo03 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个整数:");
int data = sc.nextInt();
switch (data){
case 1:
System.out.println("床前明月光");
case 2:
System.out.println("疑是地上霜");
case 3:
System.out.println("举头望明月");
case 4:
System.out.println("低头思故乡");
break;
default:
System.out.println("下面没有了");
break;
}
}
}
若case4也无break,会继续执行default语句
例题:输入月份出季节
基本实现:通过Scanner获取用户输入的月份,使用switch语句判断季节
代码结构:每个case后需要添加break语句防止穿透
季节划分:
12月、1月、2月:冬季
3月、4月、5月:春季
6月、7月、8月:夏季
9月、10月、11月:秋季
package switch1;
import java.util.Scanner;
public class Demo02 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入月份");
int data = sc.nextInt();
switch (data){
case 3,4,5:
System.out.println("春天");
break;
case 6,7,8:
System.out.println("夏天");
break;
case 9,10,11:
System.out.println("秋天");
break;
case 12,1,2:
System.out.println("冬天");
break;
default:
System.out.println("请输入1-12内的月份");
}
}
}