我想为BigDecimal数组创建一个setter方法,但是我无法正确地为它分配值。我希望我的数组至少包含一个“零”元素或平均时间没有。
public void setAddends(BigDecimal addends[]){
addends[] = BigDecimal.ZERO;
}
答案 0 :(得分:1)
BigDecimal addends[] = new BigDecimal [10];
...
public void setAddends(BigDecimal addends[]){
addends[0] = BigDecimal.ZERO;
}
答案 1 :(得分:0)
如果要对输入参数设置一些约束,则应该要求方法的调用者提供有效参数,而不是在方法内更改它。如果参数无效,请考虑抛出IllegalArgumentException
。
据我所知,您希望数组包含至少一个零或仅包含空值:
public void setAddends(BigDecimal[] addends) {
if (numberOfNonNullsIn(addends) != 0 && numberOfZerosIn(addends) == 0) {
throw new IllegalArgumentException("addends should either contain at least one zero or contain nulls only");
}
// ...
}
private long numberOfZerosIn(BigDecimal[] addends) {
return Arrays.stream(addends).filter(a -> a != null && a.compareTo(BigDecimal.ZERO) == 0).count();
}
private long numberOfNonNullsIn(BigDecimal[] addends) {
return Arrays.stream(addends).filter(a -> a != null).count();
}