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

如何用Switch语句对input.nextInt/nextDouble获取的数执行数学运算

修正后的Java计算器实现(基于Switch语句)

原代码存在的问题

  • Switch分支缺少break(如add分支未添加,会导致执行后续分支)
  • 变量命名不符合语义(如integers_1这类命名无法体现变量用途)
  • 仅读取单个输入值,未完成两数运算的核心逻辑
  • 字符串比较冗余:无需创建新String对象,直接调用equals即可
  • 拼写错误:substract应为subtract
  • alphabetize分支输入异常:nextLine()会读取之前输入操作符后的换行符,导致无法正确获取字符串
  • 代码结构错误:if语句闭合括号缺失,导致else无法正确匹配

完整修正代码

import java.util.Scanner;

public class Calculator {
    public static void main(String[] args) {
        System.out.println("List of operations: add subtract multiply divide alphabetize");

        Scanner input = new Scanner(System.in);

        System.out.print("Enter an operation: ");
        String operation = input.nextLine().toLowerCase();

        switch (operation) {
            case "add":
                System.out.print("Enter two integers: ");
                int addNum1 = input.nextInt();
                int addNum2 = input.nextInt();
                System.out.println("Result: " + (addNum1 + addNum2));
                break;
            case "subtract":
                System.out.print("Enter two integers: ");
                int subNum1 = input.nextInt();
                int subNum2 = input.nextInt();
                System.out.println("Result: " + (subNum1 - subNum2));
                break;
            case "multiply":
                System.out.print("Enter two numbers: ");
                double mulNum1 = input.nextDouble();
                double mulNum2 = input.nextDouble();
                System.out.println("Result: " + (mulNum1 * mulNum2));
                break;
            case "divide":
                System.out.print("Enter two numbers: ");
                double divNum1 = input.nextDouble();
                double divNum2 = input.nextDouble();
                if (divNum2 == 0) {
                    System.out.println("Error: Cannot divide by zero");
                } else {
                    System.out.println("Result: " + (divNum1 / divNum2));
                }
                break;
            case "alphabetize":
                // 清除之前nextInt/nextDouble遗留的换行符
                input.nextLine();
                System.out.print("Enter two strings separated by space: ");
                String[] words = input.nextLine().split(" ", 2);
                if (words.length == 2) {
                    String sorted = words[0].compareTo(words[1]) <= 0 
                        ? words[0] + " " + words[1] 
                        : words[1] + " " + words[0];
                    System.out.println("Alphabetized result: " + sorted);
                } else {
                    System.out.println("Please enter two valid strings");
                }
                break;
            default:
                System.out.println("Invalid value.");
        }

        input.close();
    }
}

关键修改说明

  • 移除冗余的if判断,改用switch的default分支处理无效操作,逻辑更简洁
  • 每个switch分支添加break,避免分支穿透
  • 完善所有运算的输入读取与结果计算逻辑,新增除法的除零异常判断
  • 修正substract的拼写错误为subtract
  • 优化变量命名,使其更具语义性
  • 修复alphabetize分支的输入问题:先清除输入流中遗留的换行符,再读取并排序字符串
  • 添加Scanner关闭操作,避免资源泄漏

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 02:56:52