gpt4 book ai didi

java - 如何解决一个简单的字符串算术表达式,例如 5-2*10?

转载 作者:搜寻专家 更新时间:2023-11-01 03:51:35 25 4
gpt4 key购买 nike

出于某种原因,我在尝试执行此操作时遇到了很多麻烦。我有一个类要我使用递归计算一个复杂的 Java 表达式,例如 (3 + 5[3*2-4])。我想我对如何处理它有一个想法,但我似乎无法弄清楚如何首先解决一些非常简单的问题 - 比如

5-2*10

我不知道该怎么做。它们不允许您导入任何外部脚本,也不允许您将其转换为后缀表达式。

我不希望任何人给我写代码,但如果有人能把我送到正确的方向或给我一点伪代码,我会非常感激 - 我花了大约两个小时尝试无济于事了解我如何使用字符串标记器和其他东西来解决它,但我总是遇到一堵我不知道如何绕过的墙。非常感谢!

最佳答案

回到大学,我也必须这样做。

我采用的方法是parse expressions using recursive descent .这篇文章很好地概述了您的解析器应该如何标记您的输入,然后您可以继续评估。你必须在这里意识到的关键是让你的解析器成为 top-down将使您的生活更轻松,因为如果您从具有单个字符的解析树的底部开始,然后使用规则将字符连接在一起形成更大的标记,我们将要求您维护一个堆栈并获得过于复杂。与此相对,既然你知道你所做的都是逻辑操作,你可以首先假设你的表达式符合你的生产规则,然后你可以继续看这个假设的内部逻辑含义。

这些 Brief Notes on Parsing如果您要选择构建自上而下的解析器或自下而上的解析器,实际上可以很好地解释实现的差异。但是,根据您的解析器需要处理的表达式的复杂程度,您可能会 choose to implement a bottom-up parser ,因为自下而上的解析算法比自上而下更强大。

我构建的解析器是在 OCaml 中,函数式编程对于这个用例来说是一个很好的解决方案。

如有任何问题,请告诉我!

关于java - 如何解决一个简单的字符串算术表达式,例如 5-2*10?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26244640/

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