新手请教个java计算公式问题

[复制链接]
查看11 | 回复6 | 2021-1-27 06:32:09 | 显示全部楼层 |阅读模式
小弟刚学java不久,有个问题请教各位大侠,万分感激~~
定义了一个list,list的每个元素是个map,有如下key:
c1c2c3c4formularesult
其中formula是个计算公式,list中每个元素的formula可能不同,例如c1/c2+c3+c4或者c1/(c2+c3+c4),现在要遍历这个list将每个元素的计算结果写到result的value中,如果计算公式有除法符号,那么如果除数是0,那么除法运算结果就是0,例如如果c2是0,那么c1/c2+c3+c4结果就是0+c3+c4,如果是c2+c3+c4=0,那么c1/(c2+c3+c4)的结果就是0.
请教各位大侠,这个用java如何实现啊,主要是除数为0的判断不太知道怎么实现,因为formula是不固定的,可能有多个除号,谢谢各位大侠了!
分 -->
回复

使用道具 举报

千问 | 2021-1-27 06:32:09 | 显示全部楼层
除0会报异常,把代码块trycatch后在catch里面将result赋值为0即可
回复

使用道具 举报

千问 | 2021-1-27 06:32:09 | 显示全部楼层
先遍历一下每个formula里面有多少个“/”就知道了,然后在找到“/”后面的那个除数,(先判断除数是不是带括号)
判断除数是否为0

回复

使用道具 举报

千问 | 2021-1-27 06:32:09 | 显示全部楼层
同楼上,不过java只对除数为0(int)验证,不验证double的0.0
publicstaticvoidmain(String[]args){
doubleresult=1;
intb=10;
inta=0;
try{
result=b/a;
}catch(Exceptione){
result=0;
}
System.out.println(result);//0.0
System.out.println(5/0.0);//Infinity
}

回复

使用道具 举报

千问 | 2021-1-27 06:32:09 | 显示全部楼层
楼上说的都对,但是个人认为除数为0不用处理,直接抛出异常就行了。因为2/0本来就除不尽你还要强行把结果计算成0不是违背数学常识吗


回复

使用道具 举报

千问 | 2021-1-27 06:32:09 | 显示全部楼层
1楼这种应该就行
回复

使用道具 举报

千问 | 2021-1-27 06:32:09 | 显示全部楼层
/0会有异常抓一下很好处理
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行