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

字符串转换公式运算

在某些特殊情况下,需要进行前台运算,然后具体运算的参数和公式是后台定义的,我们这个时候就需要把后台的公式转换成可以计算的公式。计算并输出结果。比如:(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 点击这里下载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值