【发布时间】:2015-01-26 06:03:05
【问题描述】:
我正在尝试构建一个计算器,它将评估从 java 中的字符串读取的表达式。
我的算法通过最低优先级操作(即最右边的 +)递归地分割输入字符串,然后在剩下的时候进行二进制操作。
由于某种原因,我无法检查运算符是否嵌套在括号内。
这是我的检查 - exp 是表达式的字符串,lastMD 是相关运算符在 exp 中的索引
if (exp.lastIndexOf('(', lastMD) != -1 && exp.lastIndexOf('(', lastMD) < lastMD && exp.lastIndexOf('(', lastMD) > exp.lastIndexOf('(', lastMD)) {
// it is in parenthesis
}
else {
// it is not in parenthesis
}
由于某种原因,即使 lastMD 包含在括号中,它也无法正常工作并跳转到 else。
我错过了什么?
谢谢!
【问题讨论】:
-
括号部分请看here。由于括号成对嵌套出现,简单的 indexOf 将不容易完成。在那个答案中,嵌套表达式首先被解析。
标签: java expression parentheses