Java:有什么实用的计算方法吗

Java:有什么实用的计算方法吗,java,Java,现在我有了一个字符串lam=“(8-2*7.5)+10”,那么有没有任何方法或类来计算这个字符串表达式并直接返回结果 提前谢谢 默认情况下几乎肯定不会。这将对应于Java代码的运行时解释(eeek!)或Java标准库中嵌入的相当简单的算术子语言的解析和解释机制 如果你需要分析和评估这类表达式,我会考虑编写一个简单的递归下降分析器并进行即时评估。快速的谷歌搜索应该能为这类语言提供用Java实现的建议。试试这个 double res = (Double) new ScriptEngineMa

现在我有了一个
字符串lam=“(8-2*7.5)+10”
,那么有没有任何方法或类来计算这个字符串表达式并直接返回结果


提前谢谢

默认情况下几乎肯定不会。这将对应于Java代码的运行时解释(eeek!)或Java标准库中嵌入的相当简单的算术子语言的解析和解释机制

如果你需要分析和评估这类表达式,我会考虑编写一个简单的递归下降分析器并进行即时评估。快速的谷歌搜索应该能为这类语言提供用Java实现的建议。

试试这个

    double res = (Double) new ScriptEngineManager().getEngineByName("js").eval("(8-2*7.5)+10");

Java1.6在中提供了Javascript引擎。你可以用它来计算你的数学表达式


要使用的类别是:
ScriptEngineManager
ScriptEngine

您可以使用此链接。您确定它是
js
而不是
JavaScript
?我确定,因为我测试了它并获得了3.0版本,似乎该引擎有几个别名
JavaScript
也可以工作并返回相同的脚本引擎。是的,我检查了javadocs,它说的是shortName——ScriptEngine实现的简称。ScriptEngineFactoryPerhaps的getNames方法返回的结果不是原始海报在询问时想到的解决方案,而是最实用的解决方案。(如果他使用了一个合适的java版本)没错,Java6和更高版本提供了javascript引擎,可以很容易地解决问题。如果您有适合所有java版本的更好的解决方案,请发布。谢谢你的反馈。