You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现Java简易计算器代码重复运行及代码简化?

Java简易计算器优化方案

一、实现程序循环运行(仅退出选项终止)

用while(true)循环包裹菜单选择与运算逻辑,只有当用户选择退出(case5)时终止程序,其余操作执行完成后自动回到菜单选择环节。

二、简化代码(消除重复逻辑)

原代码中加减乘除分支存在大量重复的输入循环与运算模板,核心差异仅为初始值和运算规则。通过枚举封装运算属性、提取公共计算方法可大幅简化代码:

优化后完整代码

import java.util.Scanner;
import java.util.function.DoubleBinaryOperator;

public class SimpleCalculator {
    private static final Scanner input = new Scanner(System.in);

    // 枚举封装每种运算的名称、初始值、运算规则
    private enum Operation {
        ADD("求和", 0.0, (a, b) -> a + b),
        SUBTRACT("求差", 0.0, (a, b) -> a - b),
        MULTIPLY("求积", 1.0, (a, b) -> a * b),
        DIVIDE("求商", 1.0, (a, b) -> a / b);

        private final String desc;
        private final double initialVal;
        private final DoubleBinaryOperator operator;

        Operation(String desc, double initialVal, DoubleBinaryOperator operator) {
            this.desc = desc;
            this.initialVal = initialVal;
            this.operator = operator;
        }
    }

    public static void main(String[] args) {
        while (true) {
            // 显示操作菜单
            System.out.println("=== 简易计算器 ===");
            System.out.println("1. 5个数求和");
            System.out.println("2. 0减去5个数求差");
            System.out.println("3. 5个数求积");
            System.out.println("4. 1除以5个数求商");
            System.out.println("5. 退出程序");
            System.out.print("请输入选择:");
            
            int choice = input.nextInt();

            switch (choice) {
                case 1:
                    runCalculation(Operation.ADD);
                    break;
                case 2:
                    runCalculation(Operation.SUBTRACT);
                    break;
                case 3:
                    runCalculation(Operation.MULTIPLY);
                    break;
                case 4:
                    runCalculation(Operation.DIVIDE);
                    break;
                case 5:
                    System.out.println("程序已退出");
                    System.exit(0);
                default:
                    System.out.println("无效选择,请输入有效选项");
            }
            System.out.println(); // 分隔每次操作的输出
        }
    }

    // 公共计算方法,统一处理输入与运算
    private static void runCalculation(Operation operation) {
        double result = operation.initialVal;
        for (int i = 1; i <= 5; i++) {
            System.out.print("请输入第" + i + "个数:");
            double num = input.nextDouble();
            result = operation.operator.applyAsDouble(result, num);
        }
        System.out.println("运算结果:" + result);
    }
}

优化点说明

  1. 循环运行:while(true)确保程序在非退出操作后自动回到菜单,无需额外重启逻辑。
  2. 代码复用:枚举Operation将每种运算的特征(初始值、运算规则、描述)封装,避免重复编写输入循环和运算代码。
  3. 扩展性:后续新增运算仅需在枚举中添加新项,无需修改核心逻辑,降低维护成本。

内容的提问来源于stack exchange,提问作者Prime Yt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 18:51:15