gpt4 book ai didi

java - 将字符串表达式计算为整数?

转载 作者:行者123 更新时间:2023-12-02 07:14:24 25 4
gpt4 key购买 nike

我试图将一个字符串从左到右评估为数字在0-9和四个基本运算符之间的整数(例如"5+8+(8/4)"应该评估为15"9+((3+4)*5)"评估为44"4+2*6"评估为36,因为计算了4+2首先是因为所有运算符具有相同的优先级),但我在实现括号时遇到了麻烦。

如果我不包含括号,我已经设法让它工作。我通过在 while 循环中使用 StringTokenizer 解析字符串来完成此操作。每个标记都存储在一个变量中,如果它包含数字,则将其添加到堆栈中,如果它包含运算符,则将其添加到堆栈中。然后,当整数堆栈中有两个数字时,我根据运算符堆栈中的运算符对它们进行评估。它只是对整个字符串进行这样的处理,直到 str.hasMoreTokens() 为 true,并且 while 循环中断。所以,像 8-5+7*3+1/2-4 这样的东西工作得很好,但我找不到一种方法让括号与任何表达式一起使用

我尝试过使用 String newStr = str.replaceFirst("[^(]*(", ""); 来尝试切断所有内容并包括第一个 ( 然后递归地评估剩下的内容等等,但我认为这比它必须的要复杂得多,我无法让它工作不管。我思考了好几个小时,但想不出一个更简单的方法。

谢谢,我现在完全迷失了,所以任何指导/建议都会很棒。

最佳答案

如果你想解析中缀表示法的数学表达式,你需要实现调车场algorithm 。没有看到您的代码,很难判断缺少什么。

关于java - 将字符串表达式计算为整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15104749/

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