论坛首页 Java企业应用论坛

怎么在JAVA中运算表达式?

浏览 19435 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-03-09  
zgd 写道
其实很简单的,用sql语句select一下就出来了

还是这个实用
0 请登录后投票
   发表时间:2007-03-09  
两个方法:
1。把那个表达式字符串构造成一个java源代码的方法->javac编译->ClassLoader加载->反射执行
2. 自己写代码解析, 也就200-300行代码的级别就能实现算数运算和常用函数
0 请登录后投票
   发表时间:2007-03-10  
parser combinator:
http://jparsec.codehaus.org/Tutorial
0 请登录后投票
   发表时间:2007-03-11  
呵呵,如此多的解决方案,javaeye果然卧虎藏龙啊。
我之前实现这个表达式解析的算法。我的做法是将+ - * / ( ) 定义为关键字,表达式首先要被关键字拆分开,这样就将关键字和数值分开了,而对括号的操作则是个递归的。
0 请登录后投票
   发表时间:2007-03-11  
boogie的方法听上去不错....
其他 的不很王道
0 请登录后投票
   发表时间:2007-03-11  
再给提供一个:
JEP - Java Math Expression Parser
http://www.singularsys.com/jep/
0 请登录后投票
   发表时间:2007-04-05  
zeroxin 写道
请教个问题,怎么在java中调用表达式?

比如如下类:

public class Test{
    public static void main(String[] args){
        String str = "9*(1+2)";
    
        //怎么求出这个表达式的值是27呢?
         ......
    }
}


想了好久也没有想出什么特别好的方法,看看大家有没有好的解决方法(在java中实现,比如jdk1.4),谢谢!





你可以下载BeanShell组件来计算表达式的值
代码如下
package test;

import bsh.Interpreter;
import bsh.EvalError;

 public class Test
    {
        public static void main(String[] args)
        {
            try
            {
                String expression="value=9*(1+2)";
                Interpreter  inter=new Interpreter();
                inter.eval(expression);
                Integer value=(Integer) inter.get("value");
                System.out.println("value = " + value);
             }
             catch (EvalError evalError)
             {
                evalError.printStackTrace(); 
             }
        }
    }


输出为 value=27;
0 请登录后投票
   发表时间:2007-04-05  
表达式计算的解决方案,学习了,
总结各位老大的方法:
1.jakarta commons JEXL.
2.Beanshell

3.Java Math Expression Parser jep
4.parse combinator jparsec
5.jdk 6.0的 script

6.利用SQL
7.自己写语法分析
0 请登录后投票
   发表时间:2007-04-06  
学习了,竟然有这么多解决方法
当初学习“编译原理”时用c++做过一个文法分析器,感觉不是太难

不过网上有现成的工具的话,还是拿来 直接用比较方便
0 请登录后投票
   发表时间:2007-04-06  
同意用sql,
方法比较特别,
但是实用
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics