CN106528260A - 一种基于公式的自动计算方法 - Google Patents

一种基于公式的自动计算方法 Download PDF

Info

Publication number
CN106528260A
CN106528260A CN201610988004.4A CN201610988004A CN106528260A CN 106528260 A CN106528260 A CN 106528260A CN 201610988004 A CN201610988004 A CN 201610988004A CN 106528260 A CN106528260 A CN 106528260A
Authority
CN
China
Prior art keywords
list
map
variable
value
formula
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
CN201610988004.4A
Other languages
English (en)
Inventor
关班记
季统凯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
G Cloud Technology Co Ltd
Original Assignee
G Cloud Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by G Cloud Technology Co Ltd filed Critical G Cloud Technology Co Ltd
Priority to CN201610988004.4A priority Critical patent/CN106528260A/zh
Publication of CN106528260A publication Critical patent/CN106528260A/zh
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本发明涉及JAVA开发技术领域,具体涉及一种基于公式的自动计算方法。本发明是通过字符串的方式记录算法公式,并通过Map对象存放计算公式中变量的值;自动解析计算公式,并根据计算公式中的变量名,自动从map对象中获取具体的值,完成变量的初始化工作;最终完成整个计算过程。本发明有效解决了java开发过程中算法调整导致的效率低、需要暂停服务等缺点;可以用于java开发过程中的算法调整。

Description

一种基于公式的自动计算方法
技术领域
本发明涉及JAVA开发技术领域,具体涉及一种基于公式的自动计算方法。
背景技术
目前,在JAVA的研发过程中,当一个算法需要调整时,需要通过修改代码的方式实现。算法的内部操作过程需要可以通过调整代码方便的实现,但这种效率非常低;而且当这种算法需要频繁调整时,研发人员需要不断的修改代码以适应相应的调整工作。而且这种方法还存在一个非常严重的弊端:它需要修改原来算法的java文件。这就需要对应用进行重新编辑、打包、发布,新的算法才会生效。这种方法非常不适用于目前高效、高可用的场合。
发明内容
本发明解决的技术问题在于提供一种基于公式的自动计算方法,可自动解析计算公式,并根据计算公式中的变量名,自动从map对象中获取具体的值;并完成变量的初始化工作,最终完成整个计算过程。
本发明解决上述技术问题的技术方案是:
所述的方法是通过字符串的方式记录算法公式,并通过Map对象存放计算公式中变量的值;自动解析计算公式,并根据计算公式中的变量名,自动从map对象中获取具体的值,完成变量的初始化工作;最终完成整个计算过程。
所述的方法是在Map对象中,key为公式中的变量名,value为变量的具体值;
在解析阶段,首先解析计算公式中所有的变更和运算符,并按顺序存放在List对象中;
在计算阶段,按照List的顺序,从前往后进行数学运算;首先通过list获取运算符及该运算符前后的变量名;然后通过该变量名,在Map中获取具体的数值;第三,根据运算符,将数值进行相应的运算,并把计算结果重新放入至Map对象中,而该结果的key值为不可重复的字符串,然后再把该字符串存放在list中;第四,把已经完成运算的变量及运算符,从list中删除;第五,通过新的list和Map,重新调用计算方法,直到计算结束。
所述的方法具体步骤如下:
第1步、初始化计算公式f,可令f=ab+c-c*d-e/f*g;
第2步、以f中的变更中key,初始化map,并把各变量的值存放至map中;
第3步、通过f中的运算符,解析公式f,并把各变量及运算符按先后顺序存放至list中;
第4步、判断list的长度是否为3,如果是,则跳转到第14步;如果为否,则跳转至第5步;
第5步、通过list,获取其下标为3的对象op;
第6步、判断op是否为乘法或除法,如果是,则跳转至第7步;如果为否,则跳转至第10步;
第7步、通过list下标2和4,获取操作数preKey和nextKey;并通过preKey和nextKey在map中获取具体的值preValue和nextValue;
第8步、根据op,对preValue和nextValue进行相应的计算,其结果记录为minValue;把minValue存放至map对象中,其key值为不可重复的值;
第9步、通过list,删除下标为4、3、2的变量;同时把minValue存放在list中,设定其下标为2;并跳回至第4步;
第10步、通过list下标1,获取运算符op;
第11步、通过list下标0和2,获取操作数preKey和nextKey;并通过preKey和nextKey在map中获取具体的值preValue和nextValue;
第12步、根据op,对preValue和nextValue进行相应的计算,其结果记录为minValue;把minValue存放至map对象中,其key值为不可重复的值;
第13步、通过list,删除下标为2、1、0的变量;同时把minvalue存放在list中,设定其下标为0;并跳回至第4步;
第14步、通过list下标1,获取运算符op;
第15步、通过list下标0和2,获取操作数preKey和nextKey;并通过preKey和nextKey在map中获取具体的值preValue和nextValue;
第16步、根据op,对preValue和nextValue进行相应的计算,并把结果返回。
本发明的有益效果是:本发明通过字符串的方式记录算法公式,并通过Map对象存放计算公式中变量的值。本方法可自动解析计算公式,并根据计算公式中的变量名,自动从map对象中获取具体的值。并完成变量的初始化工作,最终完成整个计算过程。当需要调整计算过程时,只需要调整计算公式即可,整体计算过程无需做任何的调整工作。对于计算方法不停做调整的业务场合,本方法即可提供高效的实现方式,而且无需对源代码进行编辑、打包,大大提高了应用系统的可用性;而且这种方法,只需要调整公式,并完成公式中的变量,对整个过程无需做任何的调整,大大提高了开发效率,特别是在报表等算法高频调整的模块中,本方法可以提供非常良好的解决方法。
附图说明
下面结合附图对本发明进一步说明:
图1为本发明的流程图。
具体实施方式
本发明使用JAVA语言实现,它通过字符串的方式记录算法公式,并通过Map对象存放计算公式中变量的值。在Map对象中,key为公式中的变量名,value为变量的具体值。在解析阶段,首先解析计算公式中所有的变更和运算符,并按顺序存放在List对象中。而在计算阶段,本方法按照List的顺序,从前往后进行数学运算。首先通过list获取运算符及该运算符前后的变量名。然后通过该变量名,在Map中获取具体的数值;第三,根据运算符,将数值进行相应的运算,并把计算结果重新放入至Map对象中,而该结果的key值为不可重复的字符串,然后再把该字符串存放在list中;第四,把已经完成运算的变量及运算符,从list中删除;第五,则通过新地list和Map,重新调用计算方法,直到计算结束。通过这种递归的方法,最终使用list的变量清空,及时计算则结束。
具体步骤如下:
第1步、初始化计算公式f,如f=ab+c-c*d-e/f*g;
第2步、以f中的变更中key,初始化map,并把各变量的值存放至map中;
第3步、通过f中的运算符,解析公式f,并把各变量及运算符按先后顺序存放至list中;
第4步、判断list的长度是否为3,如果是,则跳转到第14步;如果为否,则跳转至第5步;
第5步、通过list,获取其下标为3的对象op;
第6步、判断op是否为乘法或除法,如果是,则跳转至第7步;如果为否,则跳转至第10步;
第7步、通过list下标2和4,获取操作数preKey和nextKey;并通过preKey和nextKey在map中获取具体的值preValue和nextValue;
第8步、根据op,对preValue和nextValue进行相应的计算,其结果记录为minValue;把minValue存放至map对象中,其key值为不可重复的值;
第9步、通过list,删除下标为4、3、2的变量;同时把minvalue存放在list中,设定其下标为2;并跳回至第4步;
第10步、通过list下标1,获取运算符op;
第11步、通过list下标0和2,获取操作数preKey和nextKey;并通过preKey和nextKey在map中获取具体的值preValue和nextValue;
第12步、根据op,对preValue和nextValue进行相应的计算,其结果记录为minValue;把minValue存放至map对象中,其key值为不可重复的值;
第13步、通过list,删除下标为2、1、0的变量;同时把minvalue存放在list中,设定其下标为0;并跳回至第4步;
第14步、通过list下标1,获取运算符op;
第15步、通过list下标0和2,获取操作数preKey和nextKey;并通过preKey和nextKey在map中获取具体的值preValue和nextValue;
第16步、根据op,对preValue和nextValue进行相应的计算,并把结果返回。
如附图1所示;具体以孵化器综合管理平台的综合服务能力测评为例,演示本方法的操作过程。包括如下步骤:
第1步、初始化计算公式f,如f=ab+c-c*d-e/f*g+h/i;
第2步、通过数据库查询,初始化ab、c、d、e、f、g的值,初始化map对象:
Map<String,String>map=new HashMap<string,string>();
map·put(″ab″,″10″);
map·put(″b″,″32″);
map·put(″c″,″10″);
map·put(″d″,″5″);
map·put(″e″,″12″);
map·put(″f″,″1.2″);
map·put(″g″,″2″);
map·put(″h″,″21″);
map.put(″i″,″1″);
第3步、以map和f为参数,调整本方法的解析方法,返回list;
第4步、以map和list的参数,调用本方法的计算方法,返回结果-7。
本方法中,当公式计算过程需要做调整时,只需要调整计算公式,并设置公式中的变量值即可,因此无运算过程进行调整。本方法会根据运算公式,重新加载运算过程,并完成计算。本方法不变非常方便灵活,而且对于频繁调整计算过程的业务非常适合。整个过程也无需重新编辑、打包,只需要把修改后的xml文件替换原项目中的xml文件即可,大大提高了应用部署的难度,而且提高了服务的有效性。

Claims (3)

1.一种基于公式的自动计算方法,其特征在于:所述的方法是通过字符串的方式记录算法公式,并通过Map对象存放计算公式中变量的值;自动解析计算公式,并根据计算公式中的变量名,自动从map对象中获取具体的值,完成变量的初始化工作;最终完成整个计算过程。
2.根据权利要求1所述的自动计算方法,其特征在于:所述的方法是在Map对象中,key为公式中的变量名,value为变量的具体值;
在解析阶段,首先解析计算公式中所有的变更和运算符,并按顺序存放在List对象中;
在计算阶段,按照List的顺序,从前往后进行数学运算;首先通过list获取运算符及该运算符前后的变量名;然后通过该变量名,在Map中获取具体的数值;第三,根据运算符,将数值进行相应的运算,并把计算结果重新放入至Map对象中,而该结果的key值为不可重复的字符串,然后再把该字符串存放在list中;第四,把已经完成运算的变量及运算符,从list中删除;第五,通过新的list和Map,重新调用计算方法,直到计算结束。
3.根据权利要求1或2所述的自动计算方法,其特征在于:所述的方法具体步骤如下:
第1步、初始化计算公式f,可令f=ab+c-c*d-e/f*g;
第2步、以f中的变更中key,初始化map,并把各变量的值存放至map中;
第3步、通过f中的运算符,解析公式f,并把各变量及运算符按先后顺序存放至list中;
第4步、判断list的长度是否为3,如果是,则跳转到第14步;如果为否,则跳转至第5步;
第5步、通过list,获取其下标为3的对象op;
第6步、判断op是否为乘法或除法,如果是,则跳转至第7步;如果为否,则跳转至第10步;
第7步、通过list下标2和4,获取操作数preKey和nextKey;并通过preKey和nextKey在map中获取具体的值preValue和nextValue;
第8步、根据op,对preValue和nextValue进行相应的计算,其结果记录为minValue;把minValue存放至map对象中,其key值为不可重复的值;
第9步、通过list,删除下标为4、3、2的变量;同时把minvalue存放在list中,设定其下标为2;并跳回至第4步;
第10步、通过list下标1,获取运算符op;
第11步、通过list下标0和2,获取操作数preKey和nextKey;并通过preKey和nextKey在map中获取具体的值preValue和nextValue;
第12步、根据op,对preValue和nextValue进行相应的计算,其结果记录为minValue;把minValue存放至map对象中,其key值为不可重复的值;
第13步、通过list,删除下标为2、1、0的变量;同时把minvalue存放在list中,设定其下标为0;并跳回至第4步;
第14步、通过list下标1,获取运算符op;
第15步、通过list下标0和2,获取操作数preKey和nextKey;并通过preKey和nextKey在map中获取具体的值preValue和nextValue;
第16步、根据op,对preValue和nextValue进行相应的计算,并把结果返回。
CN201610988004.4A 2016-11-10 2016-11-10 一种基于公式的自动计算方法 Withdrawn CN106528260A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610988004.4A CN106528260A (zh) 2016-11-10 2016-11-10 一种基于公式的自动计算方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610988004.4A CN106528260A (zh) 2016-11-10 2016-11-10 一种基于公式的自动计算方法

Publications (1)

Publication Number Publication Date
CN106528260A true CN106528260A (zh) 2017-03-22

Family

ID=58350665

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610988004.4A Withdrawn CN106528260A (zh) 2016-11-10 2016-11-10 一种基于公式的自动计算方法

Country Status (1)

Country Link
CN (1) CN106528260A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108537183A (zh) * 2018-04-13 2018-09-14 拉扎斯网络科技(上海)有限公司 公式自动识别方法、装置、电子设备及存储介质
CN109919751A (zh) * 2017-12-12 2019-06-21 车伯乐(北京)信息科技有限公司 一种金融方案的生成方法,装置及系统
CN109919750A (zh) * 2017-12-12 2019-06-21 车伯乐(北京)信息科技有限公司 一种金融产品的解析方法,装置及系统

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102521411A (zh) * 2011-12-28 2012-06-27 畅捷通信息技术股份有限公司 公式及公式数据处理装置和公式及公式数据处理方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102521411A (zh) * 2011-12-28 2012-06-27 畅捷通信息技术股份有限公司 公式及公式数据处理装置和公式及公式数据处理方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
竹石: ""java执行字符串数学表达式 ScriptEngine"", 《网易博客》 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109919751A (zh) * 2017-12-12 2019-06-21 车伯乐(北京)信息科技有限公司 一种金融方案的生成方法,装置及系统
CN109919750A (zh) * 2017-12-12 2019-06-21 车伯乐(北京)信息科技有限公司 一种金融产品的解析方法,装置及系统
CN108537183A (zh) * 2018-04-13 2018-09-14 拉扎斯网络科技(上海)有限公司 公式自动识别方法、装置、电子设备及存储介质

Similar Documents

Publication Publication Date Title
CN106528260A (zh) 一种基于公式的自动计算方法
CN107506219A (zh) 一种基于Android系统的通用版本升级方法
CN105809473A (zh) 匹配模型参数的训练方法、服务推荐方法及对应装置
CN106681720A (zh) 安装包压缩、解压方法及装置
CN107679136A (zh) 拉链表的存储方法及存储系统
CN106055659A (zh) 一种歌词数据匹配方法及其设备
CN108845843A (zh) 一种函数处理方法、装置以及相关设备
CN108241503A (zh) 注释说明的生成方法及装置
JP5791121B2 (ja) コスト算出装置、コスト算出方法、及びプログラム
CN105630756A (zh) 数据处理设备和方法
CN106919576A (zh) 利用二级类目下的关键词库搜索应用程序的方法及装置
Westenbroek et al. Approaches in highly parameterized inversion: TSPROC, a general time-series processor to assist in model calibration and result summarization
CN115858719B (zh) 一种基于大数据分析的sim卡活跃度预测方法及系统
CN106202523A (zh) 网页编辑方法及装置
CN113723706B (zh) 页岩气井重复压裂产能预测方法、装置、终端及存储介质
CN114756742A (zh) 一种信息推送方法及装置、存储介质
CN101867955A (zh) 基于Gompertz函数的异网用户数预测方法
CN111698276B (zh) 一种歌曲更新方法及点唱设备
Bot et al. A stakeholder-centric software architecture analysis approach
CN112836033A (zh) 业务模型的管理方法、装置、设备及存储介质
CN106933834B (zh) 一种数据匹配方法及装置
CN115774565B (zh) 一种单代码仓库建设方法及系统及装置及介质
CN107239395B (zh) 一种源代码中无效函数的查找方法和设备
CN115495499B (zh) 一种基于污染场地同介质多批次海量数据的整合统计方法
CN104685492B (zh) 数据分析支援装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
WW01 Invention patent application withdrawn after publication
WW01 Invention patent application withdrawn after publication

Application publication date: 20170322