当前位置: 首页 > news >正文

佛山市建设官方网站哈尔滨seo优化分析

佛山市建设官方网站,哈尔滨seo优化分析,福建建设工程有限公司网站,兰州网络推广的平台mathematical-expression 实现 数学表达式解析 Java 篇 Java技术栏 使用 ME#xff08; mathematical-expression#xff09;数学表达式解析库 实现Java中 数学表达式 的解析和计算。 目录 文章目录 mathematical-expression 实现 数学表达式解析 Java 篇目录mathematical-…mathematical-expression 实现 数学表达式解析 Java 篇 Java技术栏 使用 ME mathematical-expression数学表达式解析库 实现Java中 数学表达式 的解析和计算。 目录 文章目录 mathematical-expression 实现 数学表达式解析 Java 篇目录mathematical-expression 介绍获取到 ME 组件Maven依赖坐标Gradle 依赖坐标ME 组件存储库 ME 组件结构无括号数学表达式计算组件有括号的数学表达式计算比较运算表达式函数计算表达式多参函数计算组件 高阶操作数学方式的函数注册与计算匿名实现的函数注册于计算 mathematical-expression 介绍 在计算机中本身并不存在数学表达式的概念数学表达式其本身是在人类世界中对于逻辑的一种总结规范计算机并不了解这些公式中的符号因此对于数学表达式也需要一个编译器就像编程语言到机器码之间的编译器一样mathematical-expression 是一种针对数学公式解析的有效工具能够解析包含嵌套函数包含函数数列步长累加等数学公式返回值是一个数值的结果对象同时也可以进行比较运算的操作再进行比较的时候返回值是一个布尔值结果对象。 获取到 ME 组件 ME 组件的获取有诸多方式接下来您可以根据需求选择您需要的方式来实现 ME 组件的获取与装载。 PS 请尽量使用 1.3.1 版本以及以上的版本这将有助于您使用更加稳定的版本修复了 1.2.x 版本中所有已知的bug Maven依赖坐标 您可以直接使用maven将本框架导入到项目中使用能够高效的使用该功能 dependenciesdependencygroupIdio.github.BeardedManZhao/groupIdartifactIdmathematical-expression/artifactIdversion1.3.1/version/dependency /dependenciesGradle 依赖坐标 您也可以直接通过gradle将“mathematical-expression”载入到您的框架中使用下面的依赖即可。 dependencies {implementation io.github.BeardedManZhao:mathematical-expression:1.3.1 }ME 组件存储库 您还可以在 ME 组件存储库 历史存档馆 中获取到您需要的版本对应的所有资源。 ME 组件结构 ME 组件主要由三个部分组成分别是数据存储对象以及解析与计算对象还有计算管理者他们分别负责不同的任务和位置共同配合实现强大的计算操作。 Created with Raphaël 2.3.0 数学表达式 从管理者获取到计算组件 检查表达式 检查是否通过? 是否能够支持这类数学表达式的解析? 是否实现共享池? 计算操作正常 封装计算结果与计算信息 计算完毕封装结果 发生异常 解析是否通过? yes no yes no yes no yes no yes no 接下来我们将进行实际的演示讲述如何在 Java 中快速且方便的处理数学表达式。 无括号数学表达式计算组件 此组件顾名思义就是用于没有括号的数学表达式的解析和计算中此计算组件是所有计算组件的祖先具有更简单的结构以及计算性能 Created with Raphaël 2.3.0 开始计算 是否提取完毕 结果汇总 提取操作数 提取运算符 是否为高优先级 计算临时结果 临时存储 yes no yes no 但面对复杂的计算表达式此计算组件将无法体现出其灵活性下面是有关该表达式的一个操作示例。 public class MAIN {public static void main(String[] args) {// 准备一个数学表达式String s1 1 20 * 2 4;// 获取到无括号数学表达式final Calculation instance Mathematical_Expression.getInstance(Mathematical_Expression.prefixExpressionOperation);// 开始进行检查try {instance.check(s1);// 如果没有异常就直接进行计算final CalculationNumberResults calculation (CalculationNumberResults) instance.calculation(s1);// 打印结果System.out.println(calculation.getResult());} catch (WrongFormat e) {System.out.println(表达式错误原因: e);}} }最终计算结果 45.0进程已结束,退出代码0有括号的数学表达式计算 带有括号的数学计算表达式是最常用的一种计算组件其能够实现有效的数学表达式优先级计算操作计算的复杂度也不会太高下面就是结果 Created with Raphaël 2.3.0 开始计算 是否包含括号 提取子表达式 无括号表达式计算 1or2 级计算 结果汇总 数值结果封装 yes no 在库中诸多的计算组件都是基于此组件进行拓展的下面就是一个使用示例。 public class MAIN {public static void main(String[] args) {// 准备一个数学表达式String s1 1 20 * (2 4);// 获取到有括号数学表达式final Calculation instance Mathematical_Expression.getInstance(Mathematical_Expression.bracketsCalculation2);// 开始进行检查try {instance.check(s1);// 如果没有异常就直接进行计算final CalculationNumberResults calculation (CalculationNumberResults) instance.calculation(s1);// 打印结果System.out.println(calculation.getResult());} catch (WrongFormat e) {System.out.println(表达式错误原因: e);}} }最终计算结果 121.0进程已结束,退出代码0比较运算表达式 基于 有括号 计算组件的一种拓展在这里我们可以针对两个数学表达式进行比较在这里的比较操作中能够实现有效的比较运算返回值是 布尔 类型的结果对象它的计算过程如下所示。 Created with Raphaël 2.3.0 开始计算 左右解析yes代表左 获取左边表达式 有括号表达式计算 N级计算 布尔比较计算 N1级计算 获取右边表达式 yes no public class MAIN {public static void main(String[] args) throws WrongFormat {// 获取一个计算数学比较表达式的组件final Calculation instance Mathematical_Expression.getInstance(Mathematical_Expression.booleanCalculation2);// 创建3个表达式String s1 1 2 4 * (10 - 3);String s2 2 30 (2 * 3) - 1;String s3 1 3 * 10;extracted(instance, s1 s2);// false extracted(instance, s1 s2);// true extracted(instance, s1 s3);// true extracted(instance, s1 s3);// true extracted(instance, s1 ! s3);// false extracted(instance, s1 s3);// false extracted(instance, s1 s3);// true extracted(instance, s1 s3);// true extracted(instance, s1 ! s2);// true extracted(instance, s1 s2);// true }private static void extracted(Calculation booleanCalculation2, String s) throws WrongFormat {// 检查表达式是否有错误booleanCalculation2.check(s);// 开始计算结果CalculationBooleanResults calculation (CalculationBooleanResults) booleanCalculation2.calculation(s);// 打印结果数值System.out.println(计算层数 calculation.getResultLayers() \t计算结果 calculation.getResult() \t计算来源 calculation.getCalculationSourceName());} }下面就是计算结果可以看到这里返回的结果是一个 布尔 类型的结果对象 计算层数4 计算结果false 计算来源booleanCalculation2 计算层数4 计算结果true 计算来源booleanCalculation2 计算层数3 计算结果true 计算来源booleanCalculation2 计算层数3 计算结果true 计算来源booleanCalculation2 计算层数3 计算结果false 计算来源booleanCalculation2 计算层数3 计算结果false 计算来源booleanCalculation2 计算层数3 计算结果true 计算来源booleanCalculation2 计算层数3 计算结果true 计算来源booleanCalculation2 计算层数4 计算结果true 计算来源booleanCalculation2 计算层数4 计算结果true 计算来源booleanCalculation2进程已结束,退出代码0函数计算表达式 在 ME 库中允许使用一些函数来进行计算操作数学表达式中的函数在这里也可以实现通过自定义实现函数的方式能够封装计算逻辑且有效的提升灵活性其计算复杂度并不高也是比较常用的计算组件。 Created with Raphaël 2.3.0 开始计算 提取函数 函数是否存在 提取函数形参 有括号表达式计算 N级计算 计算结果传递 函数内部计算 结果存储 函数是否提取完毕 有括号表达式计算 结果汇总 发生异常 yes no yes no 接下来就是相关的使用演示 public class MAIN {public static void main(String[] args) throws WrongFormat {// 实例化一个函数 名为DoubleValue 用于将一个数值乘2ManyToOneNumberFunction myFunction new ManyToOneNumberFunction(DoubleValue) {Overridepublic double run(double... numbers) {// 在这里的参数中第一个参数就是被FunctionFormulaCalculation所传入的参数return numbers[0] * 2;}};// 将函数注册到管理者中CalculationManagement.register(myFunction);// 获取一个计算累加数学表达式的组件FunctionFormulaCalculation functionFormulaCalculation FunctionFormulaCalculation.getInstance(zhao);// 构建一个数学表达式表达式中使用到了函数 DoubleValueString s 2 * DoubleValue(2 3) 1;// 检查数学表达式functionFormulaCalculation.check(s);// 计算结果CalculationNumberResults calculation functionFormulaCalculation.calculation(s);System.out.println(计算层数calculation.getResultLayers()\t计算结果calculation.getResult()\t计算来源calculation.getCalculationSourceName());} }在这里就是相关的计算结果 计算层数1 计算结果21.0 计算来源BracketsCalculation2进程已结束,退出代码0多参函数计算组件 从 ME 库 1.1 版本开始 针对函数数学表达式的计算将不再限制于只能传递一个参数而是可以传递无数个参数每个参数会在函数中以函数形参的格式进入到函数对象并进行计算接下来就是相关的实际演示。 public class MAIN {public static void main(String[] args) throws WrongFormat {// 实现一个sum函数 用于将数值求和ManyToOneNumberFunction manyToOneNumberFunction new ManyToOneNumberFunction(sum) {Overridepublic double run(double... numbers) {double res 0;for (double number : numbers) {res number;}System.out.println(调用函数 sum( Arrays.toString(numbers) ) res);return res;}};// 将该函数注册到管理者CalculationManagement.register(manyToOneNumberFunction);// 获取到新版本中的多参数学表达式解析组件Calculation functionFormulaCalculation Mathematical_Expression.getInstance(Mathematical_Expression.functionFormulaCalculation2);// 构建一个数学表达式表达式中使用到了函数 sumString s 2 * sum(2 3, 1 20, 10 (1 - 2)) 1;// 检查数学表达式functionFormulaCalculation.check(s);// 计算结果CalculationNumberResults calculation (CalculationNumberResults) functionFormulaCalculation.calculation(s);System.out.println(计算层数calculation.getResultLayers()\t计算结果calculation.getResult()\t计算来源calculation.getCalculationSourceName());} }在这里就是相关的计算结果 调用函数 sum([5.0, 21.0, 9.0]) 35.0 计算层数1 计算结果71.0 计算来源BracketsCalculation2进程已结束,退出代码0高阶操作 数学方式的函数注册与计算 package top.lingyuzhao;import core.Mathematical_Expression; import core.calculation.Calculation; import core.calculation.function.FunctionPackage; import exceptional.WrongFormat;public class MAIN {public static void main(String[] args) throws WrongFormat {// 将 f 函数注册进来Mathematical_Expression.register_function(f(x) x * x);// 准备要计算的表达式final String data 1 f(20) 3;// 获取到计算组件final Calculation instance Mathematical_Expression.getInstance(Mathematical_Expression.functionFormulaCalculation2);// 检查与计算instance.check(data);System.out.println(instance.calculation(data));} }下面就是计算结果 CalculationNumberResults{result404.0, sourceBracketsCalculation2}匿名实现的函数注册于计算 package top.lingyuzhao;import core.Mathematical_Expression; import core.calculation.Calculation; import core.calculation.function.FunctionPackage; import core.calculation.function.ManyToOneNumberFunction; import exceptional.WrongFormat;public class MAIN {public static void main(String[] args) throws WrongFormat {// 将 f 函数注册进来Mathematical_Expression.register_function(new ManyToOneNumberFunction(f) {Overridepublic double run(double... numbers) {return 1 numbers[0] * numbers[0] 3;}});// 准备要计算的表达式final String data 1 f(20) 3;// 获取到计算组件final Calculation instance Mathematical_Expression.getInstance(Mathematical_Expression.functionFormulaCalculation2);// 检查与计算instance.check(data);System.out.println(instance.calculation(data));} }下面就是计算结果 CalculationNumberResults{result408.0, sourceBracketsCalculation2}相关文章 《mathematical-expression 实现 数学表达式解析 C 篇》 《公共API-数学表达式计算:mathematical-expression-JS篇》
http://www.pierceye.com/news/28909/

相关文章:

  • 口碑好网站建设价格低旺店通erp系统
  • 网站做京东联盟html静态网站开发实验报告
  • 做企业网站怎么收费的10元网站备案
  • 福州网站建设推进wordpress能连115
  • 免费发布推广信息网站用layui做的一个网站模板
  • 企业网站建设博客论坛建筑工程服务有限公司
  • 专做美食的网站娃哈哈软文推广
  • 该模板尚未授权此网站电商网站界面规范
  • 0基础多久学会网站架构免费建站网站网页
  • 手机免费网站wordpress网站模板仿站工具
  • 滁州网站开发czesou阅读网站模板下载
  • 建个人网站一般多少钱名师工作室网站建设
  • 无烟锅网站规划与建设做废钢推广网站
  • 中国国家城乡建设部网站网站开发与建设
  • 国外免费网站模板建立网站需要哪些东西
  • Wordpress建站安装教程图解做谷歌推广一个月赚10万
  • 网站建设好后能直接打开吗免费tk域名注册接口
  • 自己做的网站被黑了怎么办全球搜 建设网站
  • 网站php网站空间创建目录 wordpress
  • 网站建设招标说明书哪个行业最容易做网站
  • 网站三大标签修改注意事项2345浏览器电脑版首页
  • 南宁网站建设公找生意项目
  • 网站验证码怎么做的银川网站建设银川
  • 做司考题的网站网站建站流程有哪些
  • 网站建设实践鉴定建立企业网站流程
  • 装修公司做宣传在哪个网站网站做预览文档
  • 赣州兼职网站建设十八款免费的软件下载
  • 杭州哪家公司做网站比较好南京网站优化推广
  • 做的好的手机网站有哪些内容网站有收录就会排名吗
  • 宝坻区建设路小学网站上海网站制作网站