三元运算符澄清

时间:2017-11-30 05:50:50

标签: java

有关如何改善这一点的任何建议?我想将计算结果分配给变量,但如果它是0,那么我想分配值1.以下是有效的,但必须有一个更好的方法,我不需要说两次计算:

int result = x-y > 0 ? x-y : 1;

1 个答案:

答案 0 :(得分:2)

假设您总是有一个非负整数结果(即不小于零),那么您可以尝试使用以下代码:

int result = Math.max(x - y, 1);

这里的逻辑是,如果结果应该为零,则上面的表达式将为结果赋值1。如果结果为1,那么我们也取1,对于任何大于1的结果,我们保留该值。

我不确定我们是否可以进一步简化您的三元表达。我们可以这样做:

int result = x - y;
result = result > 0 ? result : 1;

但现在我们有两行代码。在任何情况下,编译器可能会优化您写的内容,但我无论如何都不会进行两次计算。