Java 两个整数相减,结果至少为零

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

我想用一个整数减去另一个整数,结果应该为 0。所以 2 减 4 应该等于 0。我可以这样做

int result = x - y;
if (result < 0) result = 0;

但是有更优雅的方式吗?

java
3个回答
25
投票

SO是一场狗屎秀。感谢您的搭车。


9
投票

虽然很多人都急于提出

Math.max(...)
解决方案,但我想提供一个简单的 if 语句。

if (y > x) {
  result = 0;
} else {
  result = x - y;
}

保证返回的结果始终为 0,不需要调用额外的堆栈帧(输入 Math 静态函数会),并且可以防止下溢。

在极少数情况下,X 接近最小整数,并且 y 足够大,计算 (x-y) 将导致下溢。结果将是“太大”的负数,无法容纳 int 的空间,因此会变成无意义的(可能是正数)答案。

通过强制 if 语句保证不存在下溢,该解决方案也比

Math.max(...)
解决方案更正确。然而,大多数人并不关心,因为他们很少处理接近导致溢出和下溢的数字。


3
投票

使用三元运算符

?:

int result = (x - y) > 0 ? (x - y) : 0;
© www.soinside.com 2019 - 2024. All rights reserved.