《文本计算器》数学字符串转换公式进行运算并得到值

来源:互联网 发布:矩阵的秩代表什么 编辑:程序博客网 时间:2024/05/21 11:25

字符串转换公式运算

在某些特殊情况下,需要进行前台运算,然后具体运算的参数和公式是后台定义的,我们这个时候就需要把后台的公式转换成可以计算的公式。计算并输出结果。比如:(a+5*b)+( 2 * 3 )+1-(2*x)+6


方法一

利用javax自带的ScriptEngine这个类来计算,需要jdk1.6一上。优点:操作简单。缺点:效率底,jdk有要求,如果在安卓中是没有ScriptEngine,ScriptEngineManager个类。需要引进好几个包,大概1MB

这样:

 String str = "(x >= 0 && x <= 5)";          ScriptEngineManager manager = new ScriptEngineManager();          ScriptEngine engine = manager.getEngineByName("js");          engine.put("x", 4);          Object result = engine.eval(str);          System.out.println("结果类型:" + result.getClass().getName() + ",计算结果:" + result); 

或者这样

 String str = "3+(2+1)-1+3/1+2*(2+4*(1+1))+2+1-(3*1-1)";          ScriptEngineManager manager = new ScriptEngineManager();          ScriptEngine engine = manager.getEngineByName("js");          Object result = engine.eval(str);          System.out.println("结果类型:" + result.getClass().getName() + ",计算结果:" + result);  

一般情况直接COPY上面就可以了。


方法二,没有javax包的时候使用,如安卓中…

优点:速度快。缺点:功能简单,一般运算满足
calc.java 点击这里下载
使用这样:

String Str = "(a+5*b)+( 2 * 3 )+1-(2*x)+6";Replace r = new Replace(Str);r.put("a", 3);r.put("b", "2");r.put("x", 4);System.out.println("替换变量前:" + Str);System.out.println("替换变量后:" + r.toString());System.out.println("计算结果:" + 计算器.eval(r.toString()));//-------------------输出结果:-------------------------////替换变量前:(a+5*b)+( 2 * 3 )+1-(2*x)+6//替换变量后:(3+5*2)+( 2 * 3 )+1-(2*4)+6//计算结果:18

操作简单。
calc.java 点击这里下载

0 0
原创粉丝点击