如何实现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); } }
优化点说明
- 循环运行:
while(true)确保程序在非退出操作后自动回到菜单,无需额外重启逻辑。 - 代码复用:枚举
Operation将每种运算的特征(初始值、运算规则、描述)封装,避免重复编写输入循环和运算代码。 - 扩展性:后续新增运算仅需在枚举中添加新项,无需修改核心逻辑,降低维护成本。
内容的提问来源于stack exchange,提问作者Prime Yt
相关产品推荐
相关产品推荐

