简单举例:String str="1+2-3*4/(1-5)";如何计算这个公式?这里我想知道,对于各种更复杂的字符串公式,有何算法?

解决方案 »

  1.   

    http://fuliang.javaeye.com/blog/172233
      

  2.   

    你可以自己实现解析,不过相对比较麻烦。有个折中的方案:你可以利用java的脚本引擎来调用javascript/jython等进行。这样,就可以传入这样的1+2-3*4/(1-5)或者更复杂的字符串进行执行。
      

  3.   

    那是使用eval()函数?
    不太会用哦,能不能详细介绍下哦?
      

  4.   


        import javax.script.*;
        public class RunJavaScript {
        public static void main(String[] args){
            ScriptEngineManager factory = new ScriptEngineManager();
            ScriptEngine engine = factory.getEngineByName ("JavaScript");
            engine.eval("print('Hello World')");
        }
    }可以将"print('Hello World')"变为"1+2-3*4/(1-5)"吗?
      

  5.   

    http://www.ibm.com/developerworks/cn/java/l-beanshell/index.html学会查查baidu或者google吧
      

  6.   

    http://blog.csdn.net/treeroot/archive/2004/12/29/232808.aspx
      

  7.   

    经过认真寻找和思考,使用javascript引擎。
    仅仅需要这几句(核心)import javax.script.*;
        public class formula {
    public double getcalculate(String str) throws ScriptException{
            ScriptEngineManager fac = new ScriptEngineManager();
            ScriptEngine engine = fac.getEngineByName ("JavaScript");
            Object o = engine.eval(str);   
            d = Double.parseDouble(o.toString());
            return d;
    }
    }
    返回d为double类型的数值即可wxx之学习