永发信息网

Java 字符串公式 转换为计算的表达式 求结果

答案:3  悬赏:70  手机版
解决时间 2021-03-02 16:23
请大家帮帮忙,标题如上,详细如下

我数据库中存着计算公式,如 (shouyi-chengben
请大家帮帮忙,标题如上,详细如下
我数据库中存着计算公式,如 (shouyi-chengben)*0.2
我在类中求结果的时候,定义变量如下
double shouyi = 0;
double chengben = 0;
double lirun = 0;
我在数据库中取出公式,String formula = "(shouyi-chengben)*0.2";
我目前只能把公式中的每一项转换为字符串,下面就不知该如何处理了;
请问如何将上面的字符串公式转换为 使用变量计算的 表达式
lirun = (shouyi-chengben)*0.2;
希望大家能给出某种算法或例子,
请各位大仙不吝赐教,现谢谢各位的帮助,谢谢!
最佳答案
这个不太合理 数据库存数据 你把所有的公式都写成方法 然后从数据库把数据取出 调用相应方法得到返回值就行了
全部回答
jdk 1.6 用内置的javascript很方便计算 javax.script ScriptEngine ScriptEngineFactory
这涉及到一个技术:【表达式分析】 可以利用到栈数据结构来分析,也可以硬来,按人脑怎么算,你就怎么算。 如果你只是想解决这个问题,其中一个简单的思路是: 你要解决的问题实际是算出这样格式的字符串表达式的结果: ... 表示任意数.比如41,55,66234,-244 表示任意运算符,比如+,-,*,/,%,^ 把按优先级排列。 先算完优先级高的,再算优先级低的。“5+2*3*1”的具体步骤是: 先算优先级高的2*3=6 用6替换掉2*3, 得到 "5+6*1" 再检测是否还有高优先级的*,有则 6*1=6,用"6"替换掉"6*1" 得到"5+6" 接着没有高优先级的运算符字符了,可以算低优先级字符 接着得到用"11"替换"5+6"。 如果你还需要其他更为精妙和复杂的方法,建议你分别搜索关键字: “栈 表达式求值” “编译原理 表达式求值” “树 表达式求值” 因为表达式分析是一门复杂的技术,不仅仅是四则运算,还包括所有语言分析(包括伪自然语言分析)
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
癌症化疗二期期间吃什么食物补白细胞
真烟接支是什么意思
哪里有胡运权运筹学习题集答案
【一根绳子最大能承受459N拉力,使用这根绳子
美好·家园生活超市地址在什么地方,想过去办
铁梨在中国历史上最早出现在什么时期
中山安防监控 主要有些什么品牌?
是什么原因让你讨厌你的父亲?(不喜欢父亲的
三星地址在哪,我要去那里办事
主角可以穿越到各个电影里的,在现实买房子,跑
einmal ist keinmal 这句德国谚语是什么意思
龙头用彩铅图是什么颜色的
绵柔型白酒有哪些产品
柳州市柳南区红桥婴儿游泳馆地址在哪,我要去
一般打井要打多少米才有水?
推荐资讯
推荐几个有意思的网站呗?
嘉年华妆面漆(蒙城逍遥路店)地址有知道的么?
申通快递被哪个公司收购了
布劳山怎么去啊,有知道地址的么
开心花店地址在什么地方,想过去办事
大型网络游戏注册时要实名认证,会泄露个人信
右拔水地址在哪,我要去那里办事
matlab中Forward = ~Forward是什么意思
下沉气流为何增温
同学间交往过密检讨书1000
洁净发屋怎么去啊,有知道地址的么
在商代,商王和许多邦国首领都称“王”。不过
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?