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

如何在Java中正确使用parseInt处理字符串算式?

解决字符串算式中parseInt获取运算符后数字的问题

方法一:按空格分割(适用于带空格的算式,如5 + 5)

如果你的算式是用空格分隔数字和运算符的,直接用split(" ")分割字符串是最省心的方式:

const calcExpression = "5 + 5";
const [num1Str, operator, num2Str] = calcExpression.split(" ");

// 必须传第二个参数10,指定十进制解析,避免八进制误判
const num1 = parseInt(num1Str, 10);
const num2 = parseInt(num2Str, 10);

// 执行计算逻辑
let result;
switch(operator) {
  case "+":
    result = num1 + num2;
    break;
  case "-":
    result = num1 - num2;
    break;
  case "*":
    result = num1 * num2;
    break;
  case "/":
    result = num1 / num2;
    break;
}
console.log(result); // 输出 10

方法二:遍历找运算符(适用于无空格的算式,如5+5)

如果算式没有空格,先遍历字符串定位运算符的位置,再截取前后子串解析:

const calcExpression = "12-3";
let operatorPos = -1;
// 定义支持的运算符集合
const validOperators = ["+", "-", "*", "/"];

// 遍历找到第一个运算符的索引
for (let i = 0; i < calcExpression.length; i++) {
  if (validOperators.includes(calcExpression[i])) {
    operatorPos = i;
    break;
  }
}

if (operatorPos !== -1) {
  // 截取运算符前后的数字字符串
  const num1Str = calcExpression.slice(0, operatorPos);
  const num2Str = calcExpression.slice(operatorPos + 1);
  
  const num1 = parseInt(num1Str, 10);
  const num2 = parseInt(num2Str, 10);
  const operator = calcExpression[operatorPos];
  
  // 计算逻辑同上
}

关键注意点

  • 调用parseInt时必须传入第二个参数10,强制按十进制解析,避免字符串以0开头时被误解析为八进制(比如parseInt("010")不加参数会返回8,加10会返回10)。
  • 你之前只拿到运算符前内容的问题,大概率是没正确用slice截取运算符后的子串,或者反向遍历时索引计算错误——正向遍历找到运算符位置后,直接用slice(operatorPos + 1)就能拿到后面的所有字符,不需要反向遍历。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 17:42:11