简单计算器案例
学完变量和基本语法后,需要一个综合案例来巩固知识。计算器虽然简单,但涵盖了 Java 的核心概念:输入读取、条件判断、循环控制、方法封装。
需求分析
| 功能 | 说明 |
|---|---|
| 加法 | num1 + num2 |
| 减法 | num1 - num2 |
| 乘法 | num1 * num2 |
| 除法 | num1 / num2(需处理除零) |
涉及知识点:Scanner 获取用户输入、switch 多分支判断、while 循环控制。
实现代码
java
import java.util.Scanner;
public class SimpleCalculator {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("========== 简易计算器 ==========");
System.out.println("支持: + - * / 运算");
System.out.println();
while (true) {
System.out.print("请输入第一个数字: ");
double num1 = scanner.nextDouble();
System.out.print("请选择运算 (+ - * /): ");
String operator = scanner.next();
System.out.print("请输入第二个数字: ");
double num2 = scanner.nextDouble();
double result = 0;
boolean valid = true;
switch (operator) {
case "+": result = num1 + num2; break;
case "-": result = num1 - num2; break;
case "*": result = num1 * num2; break;
case "/":
if (num2 != 0) {
result = num1 / num2;
} else {
System.out.println("错误: 除数不能为 0!");
valid = false;
}
break;
default:
System.out.println("错误: 不支持的运算符!");
valid = false;
}
if (valid) {
System.out.printf("结果: %.2f %s %.2f = %.2f%n",
num1, operator, num2, result);
}
System.out.print("是否继续 (y/n): ");
if (!scanner.next().equalsIgnoreCase("y")) {
System.out.println("感谢使用,再见!");
break;
}
System.out.println();
}
scanner.close();
}
}知识点解析
Scanner 输入
java
Scanner scanner = new Scanner(System.in);
int num = scanner.nextInt();
double price = scanner.nextDouble();
String name = scanner.next();注意:连续使用 nextInt() 后使用 nextLine(),可能会读取到空行。解决方案是先调用一次 nextLine() 消费掉换行符。
switch 语句
case 值必须是常量,不能是变量。不要忘记 break,否则会「贯穿」到下一个 case。
浮点数精度
java
// 结果:0.30000000000000004
System.out.println(0.1 + 0.2);
// 解决方案:使用整数运算或 BigDecimal
int a = 1, b = 10;
System.out.println((double) a / b); // 0.1进阶练习
添加取模运算 %、支持连续运算 2 + 3 * 4、添加历史记录功能。
