Java中用switch实现计算器需用char类型处理运算符,通过Scanner读取两个double和一个字符,用switch分支执行四则运算,除零需在case'/'中检查,非法符号走default提示。

Java 中用 switch 实现简单计算器,核心是把用户输入的运算符(如 '+'、'-'、'*'、'/')作为 switch 的判断条件,分别执行对应运算逻辑。注意:Java 7+ 支持字符串 switch,但字符更轻量、更安全,推荐用 char 类型处理单个运算符。
读取两个数字和一个运算符
使用 Scanner 获取用户输入,先读两个 double(支持小数),再读一个字符作为运算符。注意跳过换行符,避免 nextLine() 和 nextChar() 混用导致异常:
- 用
scanner.nextDouble()读数字,之后调用scanner.nextLine()消费残留换行符 - 再用
scanner.nextLine().trim().charAt(0)安全获取首个非空格字符 - 或直接用
scanner.next().charAt(0)(自动跳过空白,更简洁)
用 char 类型 switch 处理四则运算
switch 表达式用 char,每个 case 对应一个运算符,注意添加 break 防止穿透;除零需单独检查,放在 case '/' 内部:
-
case '+':返回num1 + num2 -
case '-':返回num1 - num2 -
case '*':返回num1 * num2 -
case '/':先判断num2 != 0,否则抛异常或提示错误 -
default:处理非法符号,如输出“不支持的运算符”
完整可运行示例(含基础错误防护)
以下代码整合输入、switch 运算、异常提示,无多余依赖:
立即学习“Java免费学习笔记(深入)”;
<font color="#888"><pre class="brush:php;toolbar:false;">import java.util.Scanner;
<p>public class SimpleCalculator {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入第一个数字: ");
double a = sc.nextDouble();
System.out.print("请输入运算符 (+, -, *, /): ");
String opStr = sc.next();
char op = opStr.charAt(0);
System.out.print("请输入第二个数字: ");
double b = sc.nextDouble();</p><pre class='brush:java;toolbar:false;'> double result = 0;
boolean valid = true;
switch (op) {
case '+':
result = a + b;
break;
case '-':
result = a - b;
break;
case '*':
result = a * b;
break;
case '/':
if (b == 0) {
System.out.println("错误:除数不能为零!");
valid = false;
} else {
result = a / b;
}
break;
default:
System.out.println("错误:不支持的运算符 '" + op + "'");
valid = false;
}
if (valid) {
System.out.printf("%.2f %c %.2f = %.2f%n", a, op, b, result);
}
sc.close();
}}
注意事项与优化点
实际使用中容易忽略的细节:
- 不要用
String做switch判断运算符——虽然可行,但多一次对象创建,且对空字符串敏感 - 输入非数字时
nextDouble()会抛InputMismatchException,如需健壮性,应加try-catch - 若想支持连续计算(如 5 + 3 - 2),需扩展为表达式解析,单纯
switch不适用 - 运算结果建议用
printf控制小数位,避免浮点显示过长(如0.1 + 0.2输出0.30000000000000004)


















