一种基于公式的自动计算方法技术

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

【技术实现步骤摘要】

本专利技术涉及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存放在li本文档来自技高网...
一种基于公式的自动计算方法

【技术保护点】
一种基于公式的自动计算方法,其特征在于:所述的方法是通过字符串的方式记录算法公式,并通过Map对象存放计算公式中变量的值;自动解析计算公式,并根据计算公式中的变量名,自动从map对象中获取具体的值,完成变量的初始化工作;最终完成整个计算过程。

【技术特征摘要】
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是否...

【专利技术属性】
技术研发人员:关班记季统凯
申请(专利权)人:国云科技股份有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1