expr4j 表达式计算
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 表达式计算相关推荐
- 零起点学算法07——复杂一点的表达式计算
零起点学算法07--复杂一点的表达式计算 Description 下面你来计算一个复杂一点的计算表达式 Input 没有输入 Output 输出表达式的值,保留2位小数 题目分析:根号要用sqrt来算 ...
- .NET平台开源项目速览(8)Expression Evaluator表达式计算组件使用
在文章:这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧!(第二辑)中,给大家初步介绍了一下Expression Evaluator验证组件.那里只是概述了一下,并没有对其使用和强大功能做 ...
- 蓝桥杯-表达式计算(java)
算法训练 表达式计算 时间限制:1.0s 内存限制:256.0MB问题描述输入一个只包含加减乖除和括号的合法表达式,求表达式的值.其中除表示整除.输入格式输入一行,包含一个表达式.输出格式输出这个表达 ...
- [算法 笔记]字符串表达式计算(简易版)
题目:编写一个函数,计算字符串中表达式的值,参数中只包含计算符:+,-,*,/等.例如,str="10+50+2*6/3",result=64. 解析: 考虑算术表达式计算规则: ...
- 中缀表达式计算、后缀表达式计算、中缀转后缀
代码来源 : bilibili网站 :https://www.bilibili.com/video/av91996256?from=search&seid=174497233083020298 ...
- 算法笔记_044:表达式计算求值(Java)
目录 1 问题描述 2 解决方案 1 问题描述 问题描述 输入一个只包含加减乖除和括号的合法表达式,求表达式的值.其中除表示整除. 输入格式 输入一行,包含一个表达式. 输出格式 输出这个表达式的 ...
- 2017年第八届蓝桥杯C/C++ C组国赛 —— 第三题:表达式计算
标题:表达式计算 虽然我们学了许久的程序设计,但对于简单的四则混合运算式,如果让我们完全白手起家地编程来解析,还是有点棘手. 这里,我们简化一下问题,假设只有加法和乘法,并且没有括号来改变优先级. 再 ...
- 2017年第八届蓝桥杯C/C++ A组国赛 —— 第三题:表达式计算
标题:表达式计算 虽然我们学了许久的程序设计,但对于简单的四则混合运算式,如果让我们完全白手起家地编程来解析,还是有点棘手. 这里,我们简化一下问题,假设只有加法和乘法,并且没有括号来改变优先级. 再 ...
- 栈在表达式计算过程中的应用
栈在表达式计算过程中的应用 :建立操作数栈和运算符栈.运算符有优先级. 规则: 自左至右扫描表达式,凡是遇到操作数一律进操作数栈. 当遇到运算符时,如果它的优先级比运算符栈栈顶元素的优先级高就进栈.反 ...
最新文章
- linux 常用命令:
- 使用mybatis一次性添加多条数据 在oracle 数据库上
- 1.2 学习笔记之数据类型
- tar方式安装oracle11g
- python计算机结构_python06--计算机内存结构与存储管理(P27)
- 请解释下Spring 框架中的IOC 容器?
- linux datetime,Python datetime模块示例详解
- html带正方形项目列表,5种简单实用的css列表样式实例,可以直接用到项目中。...
- Flink 学习(一)
- 20151129基本语法元素
- 图像过滤,so easy~~
- 数电第二版 潘松 陈龙 第二章 答案
- 导航远峰e路航v700pro刷机包
- Java新手小白入门篇 Java面向对象(一)
- Swarm(bzz)软启动版本v.0.0-rc2
- 金山毒霸2002界面
- C++--数字转大写金额
- android浏览器对比评测,11款手机浏览器性能横向评测
- centos 6.9部署svn服务器和客户端(客户端含windows、linux版本)
- Spring MVC 数据类型转换器
热门文章
- python实现动态地图_使用Python、Geopandas和Matplotlib制作gif动态地图
- 购买的随身WiFi扣卡日记-拆掉内置的esim流量卡
- php面试题狼兔,面试题总结 - 疯狂的兔子的个人空间 - OSCHINA - 中文开源技术交流社区...
- 信息安全体系三种不同的系统架构:MIS+S、S-MIS S2-MIS
- 微信通过扫码或链接直接下载APP方法
- mdf数据库文件打开
- ODOO13 开发教程四 模型中的字段
- Contiki之初步
- 什么是数据安全,为什么需要保证数据安全
- c语言中swap表示什么意思,swap是什么意思_单片机里的SWAP A是什么意思啊?