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

如何用Java解析并求解含calculate前缀的字符串数学题?

Java实现"calculate"开头的数学题计算

核心处理步骤

  • 提取有效表达式:先截掉开头的calculate (注意带空格),从输入字符串中分离出纯计算部分,比如将calculate 5 + 2转为5 + 2。
  • 拆分表达式元素:按空格分割提取后的表达式,得到操作数和运算符,例如拆分后得到数组["5", "+", "2"]。
  • 类型转换与计算:把字符串类型的操作数转为数值类型,根据运算符执行对应计算逻辑。

完整代码示例

import java.util.Scanner;

public class CalculateHandler {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入计算指令(格式:calculate 数字 运算符 数字):");
        String input = scanner.nextLine();

        // 已实现的开头判断逻辑
        if (input.startsWith("calculate")) {
            // 提取计算表达式
            String expr = input.substring("calculate ".length()).trim();
            // 按空格拆分元素
            String[] parts = expr.split("\\s+");
            
            // 校验输入格式
            if (parts.length != 3) {
                System.out.println("格式错误,请按 calculate 数字 运算符 数字 输入");
                return;
            }

            try {
                // 转换操作数为整数
                int num1 = Integer.parseInt(parts[0]);
                String operator = parts[1];
                int num2 = Integer.parseInt(parts[2]);
                int result = 0;

                // 根据运算符执行计算
                switch (operator) {
                    case "+":
                        result = num1 + num2;
                        break;
                    case "-":
                        result = num1 - num2;
                        break;
                    case "*":
                        result = num1 * num2;
                        break;
                    case "/":
                        if (num2 == 0) {
                            System.out.println("除数不能为0");
                            return;
                        }
                        result = num1 / num2;
                        break;
                    default:
                        System.out.println("仅支持 + - * / 四种运算符");
                        return;
                }

                System.out.println("计算结果:" + result);
            } catch (NumberFormatException e) {
                System.out.println("输入的不是有效数字");
            }
        } else {
            System.out.println("指令无效,请以calculate开头");
        }
    }
}

扩展说明

  • 若需支持浮点数计算,只需将代码中的int替换为double,Integer.parseInt替换为Double.parseDouble。
  • 要处理更复杂的表达式(如多运算符、括号),可以借助ScriptEngine简化逻辑,无需手动处理运算符优先级:
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;

// 替换上述代码中的计算逻辑部分
ScriptEngine engine = new ScriptEngineManager().getEngineByName("JavaScript");
try {
    Object result = engine.eval(expr);
    System.out.println("计算结果:" + result);
} catch (ScriptException e) {
    System.out.println("表达式格式错误");
}

注意:这种方式适合处理可信输入,若用户输入不可信内容,存在注入风险,需谨慎使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 15:13:00