expr4j 表达式计算

本文介绍了expr4j,一个用于Java的表达式计算引擎,提供了下载地址和API链接。通过将jar包引入项目并添加依赖,可以进行表达式计算。文中给出了一个演示如何使用expr4j计算表达式的例子,包括依赖引入和简单表达式的调用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 expr4j 简介

Expression Calculation Engine for Java :java表达式计算引擎

2 expr4j 下载地址

https://www.objecthunter.net/exp4j/

http://expr4j.sourceforge.net/

3 expr4j api

https://www.objecthunter.net/exp4j/apidocs/index.html

4 expr4j 例子

(1)将jar包放入webapp ->WEB-INF->lib 下

(2)在pom.xml下加依赖:

<!--计算公式-->
<dependency>
    <groupId>com.expr4j</groupId>
    <artifactId>expr4j</artifactId>
    <version>0.0.1</version>
    <type>jar</type>
    <scope>system</scope>
    <systemPath>/lib/expr4j-0.0.1.jar</systemPath>
</dependency>

(3)建立一个demo类测试代码

依赖引擎例子(例子为官方文档例子)

DependencyEngine e = new DependencyEngine(new BasicEngineProvider());
e.set("B1", "=A1*2");
e.set("A1", "=12*2");
e.set("C1", "=B1*A1");
System.out.println(e.getValue(Range.valueOf("B1")));
System.out.println(e.getValue(Range.valueOf("C1")));
e.set("A1", "2");
System.out.println(e.getValue(Range.valueOf("B1")));
System.out.println(e.getValue(Range.valueOf("C1")));

计算表达式例子(例子是在官方文档例子基础上进行了简单的改动)

 SimpleEvaluationContext context = new SimpleEvaluationContext();
        try {
            String line = inputParamString;//函数调用输入参数
            if (line == null)
                return null;
            Expr e = ExprParser.parse(line);
            Exprs.toUpperCase(e);
            if (e instanceof ExprEvaluatable) {
                e = ((ExprEvaluatable) e).evaluate(context);
            }
            System.out.println(e);
            return e;
        } catch (Exception e) {
            e.printStackTrace();
        }

一些表达式的调用(该例子均是调用expr4j提供的一些类,函数)


SimpleEvaluationContext context = new SimpleEvaluationContext();
Expr e = ExprParser.parse("11.8");
Expr e1 = ExprParser.parse("4.7");
Expr[] exprs = {e,e1};
//ExprDouble 
ExprDouble exprDouble = new ExprDouble(1.9);
System.out.println("ExprDouble "+ exprDouble.value +ExprDouble.PI);

//ExprGreaterThan TRUE 比较大小
ExprGreaterThan exprGreaterThan = new ExprGreaterThan(e,e1);
System.out.println("ExprGreaterThan "+ exprGreaterThan.evaluate(context));

//AVERAGE 平均数
AVERAGE average = new AVERAGE();
System.out.println("AVERAGE "+ average.evaluate(context,exprs));

//ExcelDate toExcelDate 
System.out.println("ExcelDate "+ ExcelDate.toExcelDate((new Date()).getTime()));

//ExprFunction 函数
ExprFunction exprFunction = new ExprFunction("AVERAGE", exprs);
exprFunction.setImplementation(new AVERAGE());
System.out.println("ExprFunction " + exprFunction.evaluate(context));



【版权声明:本文为博主原创文章,博客地址:https://blog.youkuaiyun.com/shihua345,未经博主允许不得转载。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值