【问题标题】:Can I convert a string to a math operation in java?我可以在java中将字符串转换为数学运算吗?
【发布时间】:2012-07-20 10:09:52
【问题描述】:

我可以将“3*3+3”之类的字符串转换为java中的数学运算吗??

【问题讨论】:

    标签: java string math operation


    【解决方案1】:

    使用ScriptEngine评估它是否为JavaScript

    String xyz = "3*3+3";
    ScriptEngineManager manager = new ScriptEngineManager();
    ScriptEngine se = manager.getEngineByName("JavaScript");        
    Object result = se.eval(xyz);
    

    参考:Documentation

    【讨论】:

    • 这可能非常危险,并假设您完全信任 xyz 字符串的来源。这允许执行任何 JavaScript。例如,尝试将 xyz 设置为“while(true);”。见stackoverflow.com/questions/1601246/…
    • 我明白你的意思。在这种情况下,应使用正则表达式匹配 xyz,以确保它仅包含数字和数学运算符
    【解决方案2】:

    没有内置函数,您必须实现解析器。但是,您也可以查找准备好的项目,例如: http://sourceforge.net/projects/jep/http://code.google.com/p/symja/wiki/MathExpressionParser

    【讨论】:

    • @BrianAgnew 看看投票最多的答案。除非您真的相信问题是关于获得表达式的表示,我对此表示怀疑。但没有必要为此争论。
    • 你的意思是 JavaScript 引擎?它有效,但我认为它的开销太大,功能有限。最好使用专门的库。
    • 如果您需要它,那么可以。然而,OP 并没有激发它,并且声称没有内置函数是误导性的——除非你选择将问题解释为关于 expr 的表示,而不是它的结果。
    猜你喜欢
    • 1970-01-01
    • 2015-01-14
    • 2021-05-20
    • 2019-03-29
    • 1970-01-01
    • 2021-02-05
    • 2015-10-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多