Java减去两个整数,结果应该至少为零

her*_*erp 2 java

我想从另一个中减去一个整数,结果应该在0处.所以2减4应该等于0.我可以这样做

int result = x - y;
if (result < 0) result = 0;
Run Code Online (Sandbox Code Playgroud)

但是有更优雅的方式吗?

Tho*_*ing 21

int result = Math.max(0, x - y);
Run Code Online (Sandbox Code Playgroud)

  • 打败我12秒:) (2认同)

Edw*_*uck 7

虽然很多人都在Math.max(...)寻求解决方案,但我想提供一个简单的if语句.

if (y > x) {
  result = 0;
} else {
  result = x - y;
}
Run Code Online (Sandbox Code Playgroud)

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

在罕见的情况下,X接近最小int,并且y足够大,评估(xy)将导致下溢.结果将是"太大"的负数以适应int的空间,因此会卷入一个无意义的(可能是正面的)答案.

通过强制if语句来保证不存在下溢,此解决方案也比Math.max(...)解决方案更正确.但是,大多数人并不关心,因为他们很少处理接近造成溢出和下溢的数字.