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.csdn.net/shihua345,未经博主允许不得转载。】

expr4j 表达式计算相关推荐

  1. 零起点学算法07——复杂一点的表达式计算

    零起点学算法07--复杂一点的表达式计算 Description 下面你来计算一个复杂一点的计算表达式 Input 没有输入 Output 输出表达式的值,保留2位小数 题目分析:根号要用sqrt来算 ...

  2. .NET平台开源项目速览(8)Expression Evaluator表达式计算组件使用

    在文章:这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧!(第二辑)中,给大家初步介绍了一下Expression Evaluator验证组件.那里只是概述了一下,并没有对其使用和强大功能做 ...

  3. 蓝桥杯-表达式计算(java)

    算法训练 表达式计算 时间限制:1.0s 内存限制:256.0MB问题描述输入一个只包含加减乖除和括号的合法表达式,求表达式的值.其中除表示整除.输入格式输入一行,包含一个表达式.输出格式输出这个表达 ...

  4. [算法 笔记]字符串表达式计算(简易版)

    题目:编写一个函数,计算字符串中表达式的值,参数中只包含计算符:+,-,*,/等.例如,str="10+50+2*6/3",result=64. 解析: 考虑算术表达式计算规则: ...

  5. 中缀表达式计算、后缀表达式计算、中缀转后缀

    代码来源 : bilibili网站 :https://www.bilibili.com/video/av91996256?from=search&seid=174497233083020298 ...

  6. 算法笔记_044:表达式计算求值(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 问题描述 输入一个只包含加减乖除和括号的合法表达式,求表达式的值.其中除表示整除. 输入格式 输入一行,包含一个表达式. 输出格式 输出这个表达式的 ...

  7. 2017年第八届蓝桥杯C/C++ C组国赛 —— 第三题:表达式计算

    标题:表达式计算 虽然我们学了许久的程序设计,但对于简单的四则混合运算式,如果让我们完全白手起家地编程来解析,还是有点棘手. 这里,我们简化一下问题,假设只有加法和乘法,并且没有括号来改变优先级. 再 ...

  8. 2017年第八届蓝桥杯C/C++ A组国赛 —— 第三题:表达式计算

    标题:表达式计算 虽然我们学了许久的程序设计,但对于简单的四则混合运算式,如果让我们完全白手起家地编程来解析,还是有点棘手. 这里,我们简化一下问题,假设只有加法和乘法,并且没有括号来改变优先级. 再 ...

  9. 栈在表达式计算过程中的应用

    栈在表达式计算过程中的应用 :建立操作数栈和运算符栈.运算符有优先级. 规则: 自左至右扫描表达式,凡是遇到操作数一律进操作数栈. 当遇到运算符时,如果它的优先级比运算符栈栈顶元素的优先级高就进栈.反 ...

最新文章

  1. linux 常用命令:
  2. 使用mybatis一次性添加多条数据 在oracle 数据库上
  3. 1.2 学习笔记之数据类型
  4. tar方式安装oracle11g
  5. python计算机结构_python06--计算机内存结构与存储管理(P27)
  6. 请解释下Spring 框架中的IOC 容器?
  7. linux datetime,Python datetime模块示例详解
  8. html带正方形项目列表,5种简单实用的css列表样式实例,可以直接用到项目中。...
  9. Flink 学习(一)
  10. 20151129基本语法元素
  11. 图像过滤,so easy~~
  12. 数电第二版 潘松 陈龙 第二章 答案
  13. 导航远峰e路航v700pro刷机包
  14. Java新手小白入门篇 Java面向对象(一)
  15. Swarm(bzz)软启动版本v.0.0-rc2
  16. 金山毒霸2002界面
  17. C++--数字转大写金额
  18. android浏览器对比评测,11款手机浏览器性能横向评测
  19. centos 6.9部署svn服务器和客户端(客户端含windows、linux版本)
  20. Spring MVC 数据类型转换器

热门文章

  1. python实现动态地图_使用Python、Geopandas和Matplotlib制作gif动态地图
  2. 购买的随身WiFi扣卡日记-拆掉内置的esim流量卡
  3. php面试题狼兔,面试题总结 - 疯狂的兔子的个人空间 - OSCHINA - 中文开源技术交流社区...
  4. 信息安全体系三种不同的系统架构:MIS+S、S-MIS S2-MIS
  5. 微信通过扫码或链接直接下载APP方法
  6. mdf数据库文件打开
  7. ODOO13 开发教程四 模型中的字段
  8. Contiki之初步
  9. 什么是数据安全,为什么需要保证数据安全
  10. c语言中swap表示什么意思,swap是什么意思_单片机里的SWAP A是什么意思啊?