java中是否有一种优雅的方法来检查int是否等于某个值,或者是否比某个值大/小1。
例如,如果我检查x
在身边5
。我想返回 true4, 5 and 6
,因为 4 和 6 与 5 只相差一。
有内置函数可以做到这一点吗?或者我这样写会更好吗?
int i = 5;
int j = 5;
if(i == j || i == j-1 || i == j+1)
{
//pass
}
//or
if(i >= j-1 && i <= j+1)
{
//also works
}
当然,上面的代码很难看并且难以阅读。那么有没有更好的办法呢?
找出它们之间的绝对差异Math.abs
private boolean close(int i, int j, int closeness){
return Math.abs(i-j) <= closeness;
}
基于 @GregS 关于溢出的评论,如果你给出Math.abs
如果差异不适合整数,您将得到溢出值
Math.abs(Integer.MIN_VALUE - Integer.MAX_VALUE) //gives 1
通过将其中一个参数转换为 longMath.abs
将返回一个很长的意思,即差异将被正确返回
Math.abs((long) Integer.MIN_VALUE - Integer.MAX_VALUE) //gives 4294967295
因此,考虑到这一点,该方法现在将如下所示:
private boolean close(int i, int j, long closeness){
return Math.abs((long)i-j) <= closeness;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)