表达式求值组件Jeval

简介:
问题:有时候会遇到一个字符串类型的算术表达式,全是常量,要求给这个常量表达式求值,这时候往往会令人陷入困境。
 
举例来说吧,求一个算术式((4 + 3) * -2) * 3 的值。
        double x =((4 + 3) * -2) * 3;
        System.out.println(x);
 
但求另外一个:((4 + 3) * -2) * 3 + sin(45),这下傻眼了吧。
        double y =((4 + 3) * -2) * 3 + sin(45);
        System.out.println(y);
这样写实错误的,因为sin符号不能被识别,这时候怎么办呢?
 
呵呵,Jeval就是干这活来着!
 
这是个开源项目,主页  http://jeval.sourceforge.net/
 
小试一把,感觉:很好,很强大!
 
/** 
* Created by IntelliJ IDEA. 

* @author leizhimin 2009-6-30 15:01:29 
*/
 
public  class TestJeval { 
         public  static  void main(String args[])  throws EvaluationException { 
                Evaluator eval =  new Evaluator(); 
                System.out.println(eval.evaluate( "2*3-5/(3-1)")); 
                System.out.println(eval.evaluate( "7 / 2")); 
                System.out.println(eval.evaluate( "7 % 2")); 
                System.out.println(eval.evaluate( "((4 + 3) * -2) * 3")); 
                System.out.println(eval.evaluate( "((4 + 3) * -2) * 3 + sqrt(30)")); 
                System.out.println(eval.evaluate( "((4 + 3) * -2) * 3 + sin(45)")); 
        } 
}
 
3.5 
3.5 
1.0 
-42.0 
-36.52277442494834 
-41.14909647546588 

Process finished with exit code 0 
 
这个工具其实很好用,只要看看Evaluator 类的API就够了,就不多赘述了。
 
----------------------------
另外,有人手写一个类似的,功能比较弱,看看:
 
 
 本文转自 leizhimin 51CTO博客,原文链接:http://blog.51cto.com/lavasoft/171144,如需转载请自行联系原作者
相关文章
|
6月前
三元表达式使用
三元表达式使用
60 0
|
6月前
|
编译器 C++
C++系列七:表达式
C++系列七:表达式
|
6月前
Q表达式
Q表达式。
51 5
|
6月前
|
SQL 数据库 Python
F表达式
F表达式。
41 4
|
6月前
|
安全 C++ 开发者
c++表达式详细介绍
前言 表达式是 C++ 语言的基石之一,它们在程序中执行计算、赋值、逻辑判断和更多操作。本文旨在提供对 C++ 表达式各个方面的全面了解,包括基础概念、类型、求值规则以及高级主题。
143 0
|
C语言
【学习笔记之我要C】求值表达式
【学习笔记之我要C】求值表达式
71 0
|
编译器
【C++Primer】第4章:表达式
【C++Primer】第4章:表达式
120 0
【C++Primer】第4章:表达式