Java 在一行中循环 if else 之后设置值

Java set values after if else loop in one line

提问人:rickygrimes 提问时间:12/21/2018 最后编辑:Tom Hawtin - tacklinerickygrimes 更新时间:12/21/2018 访问量:1600

问:

如何在一行中设置 if else 中的值?

String amount = myJSON.optString("cValue")
double cValue = (amount != null && !amount.isEmpty()) ? Double.parseDouble(amount) : 0;
if (cValue > 0) {
    mySavings.setCouponValue(cValue);
} else {
    mySavings.setCouponValue(0.0);
}
java if-语句 ternary-operator 条件运算符

评论

0赞 Jabongg 12/21/2018
再次尝试三元运算符。你已经使用过。
2赞 Nikhil 12/21/2018
代码中已经有逻辑了<condition> ? <if true> : <if false>

答:

9赞 Nicholas K 12/21/2018 #1

您可以简单地执行以下操作:

mySavings.setCouponValue((cValue > 0 ? cValue : 0.0));
2赞 Ankur 12/21/2018 #2

您可以简单地使用三元运算符来设置值,而不必创建临时变量“cValue”,只是为了进行比较

String amount = myJSON.optString("cValue")
mySavings.setCouponValue((amount != null && !amount.isEmpty()) ? Double.parseDouble(amount) : 0.0);
3赞 Gavin Gao 12/21/2018 #3

你可以这样编码:

mySavings.setCouponValue((cValue > 0 ? cValue : 0.0));

此外,您可以在您的方法中避免 if else。assert

0赞 m fauzan abdi 12/21/2018 #4

如果您使用的是 Java 8 或更高版本,您可以这样做:

mySavings.setCouponValue(Optional.ofNullable(amount).map(cValue -> !cValue.isEmpty() ?  Double.parseDouble(cValue):0).orElse(0.0));
0赞 Tom Hawtin - tackline 12/21/2018 #5

为了完整性

mySavings.setCouponValue(Math.max(0.0, cValue));

如果你真的致力于写可怕的“一句话”,那就很有用了。在这种情况下,通过避免引入变量。cValue