请大家帮帮忙,标题如上,详细如下
我数据库中存着计算公式,如 (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;
希望大家能给出某种算法或例子,
请各位大仙不吝赐教,现谢谢各位的帮助,谢谢!
Java 字符串公式 转换为计算的表达式 求结果
答案:3 悬赏:70 手机版
解决时间 2021-03-02 16:23
- 提问者网友:趣果有间
- 2021-03-01 19:39
最佳答案
- 五星知识达人网友:躲不过心动
- 2021-03-01 21:16
这个不太合理 数据库存数据 你把所有的公式都写成方法 然后从数据库把数据取出 调用相应方法得到返回值就行了
全部回答
- 1楼网友:老鼠爱大米
- 2021-03-01 23:01
jdk 1.6 用内置的javascript很方便计算
javax.script
ScriptEngine
ScriptEngineFactory
- 2楼网友:话散在刀尖上
- 2021-03-01 22:32
这涉及到一个技术:【表达式分析】
可以利用到栈数据结构来分析,也可以硬来,按人脑怎么算,你就怎么算。
如果你只是想解决这个问题,其中一个简单的思路是:
你要解决的问题实际是算出这样格式的字符串表达式的结果:
...
表示任意数.比如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"。
如果你还需要其他更为精妙和复杂的方法,建议你分别搜索关键字:
“栈 表达式求值”
“编译原理 表达式求值”
“树 表达式求值”
因为表达式分析是一门复杂的技术,不仅仅是四则运算,还包括所有语言分析(包括伪自然语言分析)
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯