小编典典

检查范围内的int

java

java中是否有一种优雅的方法来检查int是否等于或大于或小于1。

例如,如果我检查x周围5。我想在上返回true 4, 5 and 6,因为4和6距5仅1。

有内置功能可以做到这一点吗?还是我最好这样写?

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
}

当然,以上代码很难看懂。那有更好的方法吗?


阅读 221

收藏
2020-11-26

共1个答案

小编典典

找到它们之间的绝对差异 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

通过将其中一个参数强制转换为long Math.abs将返回long,表示将正确返回差值

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; 
}
2020-11-26