Java中BigDecimal比较报错:Operator '||'无法用于int,求正确实现
解决Java中BigDecimal比较与||运算符的报错问题
问题出在BigDecimal.compareTo()方法的返回值类型上:这个方法返回的是int类型(-1表示当前值小于目标值,0表示相等,1表示当前值大于目标值),而||逻辑运算符要求两侧必须是boolean类型,直接用就会触发Operator '||' cannot be applied to 'int', 'int'错误。
你需要根据实际业务需求,把compareTo的结果转换成boolean判断后,再用||连接。举几个常见场景的正确写法:
场景1:任意一个数值大于等于目标值
if (item.getLength().compareTo(BigDecimal.valueOf(50)) >= 0 || item.getScore().compareTo(BigDecimal.valueOf(500)) >= 0 || item.getAge().compareTo(BigDecimal.valueOf(5000)) >= 0) { // 执行你的操作 }
场景2:任意一个数值大于目标值
if (item.getLength().compareTo(BigDecimal.valueOf(50)) > 0 || item.getScore().compareTo(BigDecimal.valueOf(500)) > 0 || item.getAge().compareTo(BigDecimal.valueOf(5000)) > 0) { // 执行你的操作 }
场景3:任意一个数值小于目标值
if (item.getLength().compareTo(BigDecimal.valueOf(50)) < 0 || item.getScore().compareTo(BigDecimal.valueOf(500)) < 0 || item.getAge().compareTo(BigDecimal.valueOf(5000)) < 0) { // 执行你的操作 }
核心就是先通过比较compareTo的返回值和0的关系,得到boolean类型的判断结果,再用逻辑运算符连接这些结果。
内容的提问来源于stack exchange,提问作者Peter Penzov
相关产品推荐
相关产品推荐

