【问题标题】:Java:Is there some utility method to calculate [duplicate]Java:是否有一些实用方法来计算[重复]
【发布时间】:2023-03-28 19:52:01
【问题描述】:

现在我有一个String lam = "(8-2*7.5)+10",那么有什么方法或类可以计算这个字符串表达式直接返回结果

提前致谢!

【问题讨论】:

标签: java


【解决方案1】:

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

如果您需要解析和评估此类表达式,我会考虑编写一个简单的递归下降解析器并即时评估。快速的 Google 搜索应该会建议在 Java 中针对此类语言执行此操作的方法。

【讨论】:

    【解决方案2】:

    试试这个

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

    【讨论】:

    • 您确定是js 而不是JavaScript
    • 我确定是因为我测试了它并获得了 3.0
    • 好像那个引擎有几个别名。 JavaScript 也可以工作并返回相同的脚本引擎。
    • 是的,我检查了 javadocs 它说 shortName - ScriptEngine 实现的短名称。由其 ScriptEngineFactory 的 getNames 方法返回
    【解决方案3】:

    java 1.6 内提供了Javascript引擎。你可以用它来计算你的数学表达式。

    要使用的类是:ScriptEngineManagerScriptEngine

    【讨论】:

    • 或许不是原发帖人在询问时想到的解决方案,而是最务实的解决方案。 (如果他使用合适的 java 版本)
    • 是的,Java 6 及更高版本提供了非常容易解决问题的 javascript 引擎。如果您有适合所有 Java 版本的更好的解决方案,请发布。感谢您的反馈。
    猜你喜欢
    • 2020-03-25
    • 1970-01-01
    • 1970-01-01
    • 2019-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-25
    • 1970-01-01
    相关资源
    最近更新 更多