【发布时间】:2013-02-11 15:50:26
【问题描述】:
假设我有一个这样声明的方法:
public double Calc(String expression) {
// Code
}
我想采用类似的字符串表达式
"2 + 4 - (3 * 4)"
然后将它提供给Calc(),它应该返回它得到的值。
你能从一个字符串中解析出一个数学表达式,让它变成一个Java可以理解的表达式吗?因为通常你可以写
return 2 + 4 - (3 * 4);
但这仅适用于单个表达式。
【问题讨论】:
-
要自己滚动,您通常会使用表达式树en.wikipedia.org/wiki/Binary_expression_tree
-
@beto 但似乎这样做,你打开整个 JS 引擎只是为了做这件事。虽然它给了我一个暗示,我想。谢谢!
-
用正则表达式来简化解决方案,使用BODMAS原理并执行语句。您可以使用循环遍历表达式。评估每个条件,最后抛出答案。 JS 方法不好,因为注入是对您的应用程序的真正威胁。
-
谷歌“评估中缀表达式”,你会找到答案。