Skip to content

项目 3:简易计算器

项目概述

简易计算器是一个基于 Java 控制台的应用,用于执行基本的算术运算,如加法、减法、乘法和除法。它支持循环计算,并且能够处理异常情况。

功能需求

  1. 支持基本运算:支持加减乘除四则运算
  2. 循环计算:用户可以连续进行多次计算
  3. 异常处理:处理除数为零等异常情况
  4. 用户友好:提供清晰的操作界面和提示信息

技术实现

java
import java.util.Scanner;

public class SimpleCalculator {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        boolean continueCalculating = true;
        
        while (continueCalculating) {
            System.out.println("===================================");
            System.out.println("        简易计算器");
            System.out.println("===================================");
            System.out.println("请选择运算类型:");
            System.out.println("1. 加法 (+)");
            System.out.println("2. 减法 (-)");
            System.out.println("3. 乘法 (*)");
            System.out.println("4. 除法 (/)");
            System.out.println("===================================");
            
            int choice = 0;
            boolean validChoice = false;
            
            // 验证用户选择
            while (!validChoice) {
                System.out.print("请输入你的选择 (1-4): ");
                if (scanner.hasNextInt()) {
                    choice = scanner.nextInt();
                    if (choice >= 1 && choice <= 4) {
                        validChoice = true;
                    } else {
                        System.out.println("输入错误,请输入 1-4 之间的数字。");
                    }
                } else {
                    System.out.println("输入错误,请输入数字。");
                    scanner.next(); // 消费无效输入
                }
            }
            
            // 输入操作数
            double num1 = 0, num2 = 0;
            boolean validInput = false;
            
            while (!validInput) {
                System.out.print("请输入第一个数字: ");
                if (scanner.hasNextDouble()) {
                    num1 = scanner.nextDouble();
                    validInput = true;
                } else {
                    System.out.println("输入错误,请输入数字。");
                    scanner.next(); // 消费无效输入
                }
            }
            
            validInput = false;
            while (!validInput) {
                System.out.print("请输入第二个数字: ");
                if (scanner.hasNextDouble()) {
                    num2 = scanner.nextDouble();
                    validInput = true;
                } else {
                    System.out.println("输入错误,请输入数字。");
                    scanner.next(); // 消费无效输入
                }
            }
            
            // 执行计算
            double result = 0;
            boolean calculationSuccess = true;
            
            switch (choice) {
                case 1:
                    result = num1 + num2;
                    break;
                case 2:
                    result = num1 - num2;
                    break;
                case 3:
                    result = num1 * num2;
                    break;
                case 4:
                    if (num2 == 0) {
                        System.out.println("错误:除数不能为零!");
                        calculationSuccess = false;
                    } else {
                        result = num1 / num2;
                    }
                    break;
            }
            
            // 显示结果
            if (calculationSuccess) {
                System.out.println("===================================");
                System.out.println("计算结果:");
                switch (choice) {
                    case 1:
                        System.out.println(num1 + " + " + num2 + " = " + result);
                        break;
                    case 2:
                        System.out.println(num1 + " - " + num2 + " = " + result);
                        break;
                    case 3:
                        System.out.println(num1 + " * " + num2 + " = " + result);
                        break;
                    case 4:
                        System.out.println(num1 + " / " + num2 + " = " + result);
                        break;
                }
                System.out.println("===================================");
            }
            
            // 询问是否继续计算
            System.out.print("是否继续计算?(y/n): ");
            scanner.nextLine(); // 消费换行符
            String continueInput = scanner.nextLine();
            continueCalculating = continueInput.equalsIgnoreCase("y");
        }
        
        System.out.println("计算器已关闭,谢谢使用!");
        scanner.close();
    }
}

代码解析

  1. 导入包

    • java.util.Scanner:用于读取用户输入
  2. 主方法

    • 创建 Scanner 对象
    • 使用 continueCalculating 变量控制计算循环
  3. 计算循环

    • 显示计算器菜单
    • 读取用户选择的运算类型
    • 验证用户选择的有效性
    • 读取两个操作数
    • 验证操作数的有效性
    • 根据选择执行相应的运算
    • 处理异常情况(如除数为零)
    • 显示计算结果
    • 询问用户是否继续计算
  4. 异常处理

    • 处理除数为零的情况
    • 验证用户输入的有效性
  5. 结束计算

    • 显示结束信息
    • 关闭 Scanner

运行示例

运行结果

===================================
        简易计算器
===================================
请选择运算类型:
1. 加法 (+)
2. 减法 (-)
3. 乘法 (*)
4. 除法 (/)
===================================
请输入你的选择 (1-4): 1
请输入第一个数字: 10
请输入第二个数字: 5
===================================
计算结果:
10.0 + 5.0 = 15.0
===================================
是否继续计算?(y/n): y
===================================
        简易计算器
===================================
请选择运算类型:
1. 加法 (+)
2. 减法 (-)
3. 乘法 (*)
4. 除法 (/)
===================================
请输入你的选择 (1-4): 4
请输入第一个数字: 10
请输入第二个数字: 0
错误:除数不能为零!
是否继续计算?(y/n): y
===================================
        简易计算器
===================================
请选择运算类型:
1. 加法 (+)
2. 减法 (-)
3. 乘法 (*)
4. 除法 (/)
===================================
请输入你的选择 (1-4): 3
请输入第一个数字: 7.5
请输入第二个数字: 2
===================================
计算结果:
7.5 * 2.0 = 15.0
===================================
是否继续计算?(y/n): n
计算器已关闭,谢谢使用!

扩展功能

  1. 更多运算:添加幂运算、平方根、取模等更多运算类型

  2. 连续计算:支持上次计算结果作为下次计算的第一个操作数

  3. 历史记录:保存计算历史,允许查看之前的计算结果

  4. 图形界面:使用 Swing 或 JavaFX 实现图形界面

  5. 科学计算器:添加科学计算功能,如三角函数、对数等

总结

简易计算器是一个实用的 Java 控制台应用,它演示了如何使用基本的 Java 技术实现一个功能完整的计算器。通过这个项目,你可以学习:

  1. 用户交互:如何使用 Scanner 读取用户输入
  2. 循环控制:如何使用 while 循环实现连续计算
  3. 条件判断:如何使用 switch 语句根据用户选择执行不同的运算
  4. 异常处理:如何处理除数为零等异常情况
  5. 输入验证:如何验证用户输入的有效性

这个项目是一个很好的 Java 入门练习,它涵盖了 Java 基础编程的许多重要概念,同时也是一个实用的小工具。

© 2026 编程马·菜鸟教程 版权所有