Rhino——一个可以在Java中操作和执行JS的框架
前段时间,在浏览javaeye论坛,看见有人征集如何在java中运行数学表达式。结果方案五花八门:
1.jakarta commons JEXL.
2.Beanshell
3.Java Math Expression Parser jep
4.parse combinator jparsec
5.jdk 6.0的 script
6.利用SQL
7.自己写语法分析
如果自己写语法分析,没有个2000行估计搞不定。有人用sql来运行数学表达式,比较另类。
不过由于前段时间较深入的学习了一些java的javascript引擎,我给出的方案就是用javascript来计算了。
java中比较著名的js引擎当属mozilla开源的rhino,不过jdk6已经把它收归帐下,成了正规军。
<div class="dp-highlighter"><div class="bar">
[*]public class MathEval
[*]{
[*] public static void main(String[] args)
[*] {
[*] Context cx = Context.enter();
[*] try
[*] {
[*] Scriptable scope = cx.initStandardObjects();
[*] String str = "9*(1+2)";
[*] Object result = cx.evaluateString(scope, str, null, 1, null);
[*] double res = Context.toNumber(result);
[*] System.out.println(res);
[*] }
[*] finally
[*] {
[*] Context.exit();
[*] }
[*] }
[*]}
页:
[1]