控制语句 分支语句 switch
switch语句完整格式
- expression 中执行完必须是个值并且必须是
int
或者枚举
或者字符串
类型 - break语句只要执行,switch就要结束
- default语句不是必须的,但是建议写上,这样程序更加健壮
switch(expression){
//expression 中执行完必须是个值value,并且必须是 int 或者 枚举 或者 字符串类型
case value1:
//当 expression的值等于 value1时,执行这里代码
break;
case value2:
//当 expression的值等于 value2时,执行这里代码
break;
case value3:
//当 expression的值等于 value3时,执行这里代码
break;
//...
default:
//当expression的值与所有的case语句都不匹配时,执行这里的代码
switch语句完成的if语句一定可以完成,但是在一些情况下switch写代码更加好
---
package chapter2;
import java.util.Scanner;
public class switch01 {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.println("请输入月份: ");
int month = s.nextInt();
String season = "您输入的月份不存在";
//case可以合并
switch (month) {
case 3: case 4: case 5:{
season = "春季";
//break如果没有,可能会有case穿透现象
break;
}
case 6: case 7: case 8:{
season = "夏季";
break;
}
case 9: case 10: case 11:{
season = "秋季";
break;
}
case 12: case 1: case 2:{
season = "冬季";
break;
}
}
System.out.println(season);
}
}
如果没有break会有case穿透现象存在
例如:
package chapter2;
import java.util.Scanner;
public class switch01 {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.println("请输入月份: ");
int month = s.nextInt();
String season = "您输入的月份不存在";
//case可以合并
switch (month) {
case 3: case 4: case 5:{
season = "春季";
//break如果没有,可能会有case穿透现象
// break;
}
case 6: case 7: case 8:{
season = "夏季";
// break;
}
case 9: case 10: case 11:{
season = "秋季";
break;
}
case 12: case 1: case 2:{
season = "冬季";
break;
}
}
System.out.println(season);
}
}
输出:
package chapter2;
/*
编写一个计算器
输入符号为“+” 则输出两个数的和,输出符号为“-”则输出两个数的差
*/
import java.sql.PreparedStatement;
import java.util.Scanner;
public class switch02 {
public static void main(String[] args) {
int result = 0;
System.out.println("欢迎使用简易版计算器");
Scanner s = new Scanner(System.in);
System.out.println("请输入第一个数字");
int num1 = s.nextInt();
System.out.println("请输入第二个数字");
int num2 = s.nextInt();
System.out.println("请输入运算符");
String oper = s.next();
switch (oper) {
case "+": {
result = num1 + num2;
break;
}
case "-":{
result = num1 - num2;
break;
}
case "*":{
result = num1 * num2;
break;
}
case "/":{
result = num1 / num2;
break;
}
case "%":{
result = num1 % num2;
break;
}
default:{
System.out.println("不支持运算!");
}
}
System.out.println(num1 + oper + num2 + "=" + result );
}
}
switch语句注意事项
- switch适用于判断固定值,if适用于判断返回和区间。switch能做的if肯定能做,但是if能完成的switch不一定能完成
- case语句中的值必须是字面量而不是变量
- case语句的值必须和switch值的类型一致
- 每个switch语句必须加上一个break语句,防止case穿透现象
- 一般都有一个default分支处理紧急情况
- default可以放在任意位置,但是一般放在最后
java12中switch新特性,代码变得更加简洁
switch(x){
case 1 -> System.out.println(1);
case 2 -> System.out.println(2);
case 3 -> System.out.println(3);
default -> Systemout.out.println("default");
}
switch(x){
case 1, 2, 3 -> System.out.println("1,2,3");
}
switch(x){
case 1 -> {
System.out.println(1);
System.out.println(1);
}
}
switch (oper) {
case "+" -> {
result = num1 + num2;
}
case "-" -> {
result = num1 - num2;
}
case "*" -> {
result = num1 * num2;
}
case "/" -> {
result = num1 / num2;
}
default -> {
System.out.println("错误");
}
}