gpt4 book ai didi

java - 检查运算符是否嵌套在括号内

转载 作者:行者123 更新时间:2023-12-01 12:13:05 25 4
gpt4 key购买 nike

我正在尝试构建一个计算器,它将计算从 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包含在括号中,它也不起作用并跳转到其他。

我错过了什么?

谢谢!

最佳答案

现在表达的条件永远不会返回 true:

int i = exp.lastIndexOf('(', lastMD);
if (i != -1 && i < lastMD && i > i) { ...

i > i 将始终评估为 false

作为旁注,正如评论中已经指出的那样,您可能会考虑使用另一种方法,例如简单的解析器来构建可遍历的 AST(查看 ANTLR )。

以下相关问题可能也有用:How does a simple calculator with parentheses work? .

关于java - 检查运算符是否嵌套在括号内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27174074/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com