比较 Java 中的 BigDecimal 值[重复]

问题描述 投票:0回答:2

我想比较值并在找到某些值时执行某些条件。在Java中我尝试使用这段代码:

if(item.getLenght().compareTo(BigDecimal.valueOf(50))
                        || item.getSocre().compareTo(BigDecimal.valueOf(500))
                        || item.getAge().compareTo(BigDecimal.valueOf(5000)))
                        {
                        ....... do some action
}

但是我收到错误

Operator '||' cannot be applied to 'int', 'int'

实施此检查的正确方法是什么?

java
2个回答
3
投票

方法

BigDecimal#compareTo(BigDecimal)
返回
int
,而不是
boolean
,因此运算符
||
将不起作用。

您需要稍微更改一下代码:

if (item.getLenght().compareTo(BigDecimal.valueOf(50)) == 0
    || item.getSocre().compareTo(BigDecimal.valueOf(500)) == 0
    || item.getAge().compareTo(BigDecimal.valueOf(5000)) == 0) {

    // do something funny
}

1
投票

Compare to 方法不返回 boolean,它返回 int。这是规范https://docs.oracle.com/javase/7/docs/api/java/math/BigDecimal.html#compareTo(java.math.BigDecimal) 所以如果你想检查长度是否等于 50,你需要写:

item.getLength().compareTo(BigDecimal.valueOf(50)) == 0

这同样适用于代码中的所有其他条件。

© www.soinside.com 2019 - 2024. All rights reserved.