求助兄弟们,求值复杂表达式,麻烦给些思路[是不是又得编辑复杂正则表达式?]

toss3000 2011-05-16 08:56:06
例子如下[只是公式一部分]

Map<String, String> map = new HashMap();
map.put("x", "4");
map.put("y", "5");
map.put("z", "7");
map.put("d", "2");

if(([[x]]-[[y]])>0,500,400)+[[x]]/[[z]]+(if([[y]]-[[z]]+[[d]])>0,200,100)+[[y]],我现在的想法是,先把if中的值求出来,然后带入公式进行运算,if条件句的意思是条件为真的话,取第一个数,否则取第二个数,关键就在于我不知道怎么取得这些if条件语句……或者说同志们有更好的办法,请指点
...全文
67 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
若鱼1919 2011-05-16
  • 打赏
  • 举报
回复
看上去类似于3目运算符?:
((x-y)>0?500:400)+x/z+((y-z+d)>0?200:100)+y
wenbodong 2011-05-16
  • 打赏
  • 举报
回复
楼主,这东西比较复杂。
if(([[x]]-[[y]])>0,500,400)
对于检测这个,我一上来想到用正则表达式。如果仅如这样,用也可以。可是问题是,if里面的两个逗号隔开的三个表达式,也可以是很复杂的,并且也可以嵌套if表达式。如果是这样的话,用正则表达式貌似较难定位。
建议你先去看看用栈如何实现四则运算加括号的计算,比如:(1+2)*3-4/5。只不过你这里多了一种运符if(,,)。但是原理还是用栈进行计算。
toss3000 2011-05-16
  • 打赏
  • 举报
回复
问题补充,其中的[[x]]、[[y]]等要转换为map中对应x、y的值,比如4、5
toss3000 2011-05-16
  • 打赏
  • 举报
回复
使用正则表达式,把if包括的内容都取出来吗?
toss3000 2011-05-16
  • 打赏
  • 举报
回复
关键是如何进行if中的计算……
pmars 2011-05-16
  • 打赏
  • 举报
回复
先把if中的值求出来,然后带入公式进行运算

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧