【发布时间】:2022-01-13 11:32:52
【问题描述】:
我正在尝试从字符串中添加一些数字 例如字符串是“5 + 3 +2”。这应该返回 10 这是我获取运算符号的代码是“+”
int opIndex= expression.indexOf("+");
Double lhs = Double.parseDouble(expression.substring(0, opIndex));
Double rhs = Double.parseDouble(expression.substring(opIndex+1));
我得到的回报是 lhs = 5(这是我想要的) rhs = 返回字符串错误(3+2);
我怎样才能得到数字 3,然后在 (5+3) 或任何其他方法之后执行 + 2?
谢谢。
【问题讨论】:
-
您需要将字符串拆分为一系列操作数和运算符,而不仅仅是一个。尝试寻找数学表达式解析的教程,网上应该有很多。
-
indexOf有一个带有 beginIndex 的重载版本。在循环中使用它。 -
首先,您的字符串方程中没有
-字符,因此opIndex将是-1。等式的拆分需要多一点……稳健。你需要的是一个数学方程解析器。 -
如果您需要递归地执行此操作,请先读取第一个操作数,然后再读取运算符,然后递归地处理剩余的字符串。
-
@f1sh 那是我卡住的部分。你能给我一些进一步的解释或例子吗?
标签: java recursion numbers substring indexof