switch语句的使用使我们的代码更具可读性,用来代替过多的 if ... else ... if这样的判断。
基本语法:
switch (variable/expression) {
case value1:
// case1 语句
break;
case value2:
// case2 语句
break;
.. .. ...
.. .. ...
default:
// default 语句
}
switch语句评估expression或variable(表达式或变量),并将其与每个case标签的值(可以是表达式)进行比较。
现在,如果值与某个case标签匹配,那么将执行匹配case标签的所有语句。
例如,如果 variable/expression 等于value2。在这种情况下,case将执行该匹配的所有语句(case2的语句)。
注意,在每种情况下都使用break语句。break语句用于终止该语句的执行switch。
这很重要,因为如果不使用break语句,则case之后的所有语句将按顺序执行,直到switch语句结束。
switch语句流程图

示例:Java switch语句
class Main {
public static void main(String[] args) {
int week = 4;
String day;
// switch语句判断星期几
switch (week) {
case 1:
day = "Sunday";
break;
case 2:
day = "Monday";
break;
case 3:
day = "Tuesday";
break;
//匹配星期的值
case 4:
day = "Wednesday";
break;
case 5:
day = "Thursday";
break;
case 6:
day = "Friday";
break;
case 7:
day = "Saturday";
break;
default:
day = "Invalid day";
break;
}
System.out.println("这一天是 " + day);
}
}
输出:
这一天是 Wednesday
在上面的示例中,我们使用switch语句找出一周中的某天。在这里,我们有一个保存整数值的变量week。将该值与switch块case内的每个值进行比较。
这里week的值是4。因此,它与case 4匹配。所以case 4里面的语句被执行了。
示例:使用switch语句制作计算器
下面的程序从用户那里接受三个输入:一个运算符和2个数字。根据用户提供的运算符,对这些数字进行计算。然后结果显示在屏幕上。
在浏览该程序之前,您最好已经了解Java scanner以接受用户的输入。
import java.util.Scanner;
class Main {
public static void main(String[] args) {
char operator;
Double number1, number2, result;
//创建一个Scanner类的对象
Scanner scanner = new Scanner(System.in);
System.out.print("输入运算符 (选项: +, -, * 或 /): ");
//要求用户输入运算符
operator = scanner.next().charAt(0);
System.out.print("分别输入数字1和数字2: ");
//要求用户输入数字
number1 = scanner.nextDouble();
number2 = scanner.nextDouble();
switch (operator) {
//两个数字相加
case '+':
result = number1 + number2;
System.out.print(number1 + "+" + number2 + " = " + result);
break;
//两个数字相减
case '-':
result = number1 - number2;
System.out.print(number1 + "-" + number2 + " = " + result);
break;
//两个数字相乘
case '*':
result = number1 * number2;
System.out.print(number1 + "*" + number2 + " = " + result);
break;
//两个数字相除
case '/':
result = number1 / number2;
System.out.print(number1 + "/" + number2 + " = " + result);
break;
default:
System.out.println("Invalid operator!");
break;
}
}
}
输出:
输入运算符 (选项: +, -, * 或 /): *
分别输入数字1和数字2: 1.4
-5.3
1.4*-5.3 = -7.419999999999999
在上面的示例中,我们使用switch语句创建了一个计算器。它根据用户提供的运算符执行计算。
总结:
switch case执行时,一定会先进行匹配,匹配成功返回当前case的值,再根据是否有break,判断是否继续输出,或是跳出判断。
还需注意的是case后面只能是常量,可以是运算表达式,但一定要符合正确的类型。不能是变量,即便变量在之前进行了赋值,JVM依然会报错。