java中是否有一种优雅的方法来检查int是否等于或大于或小于1。
例如,如果我检查x周围5。我想在上返回true 4, 5 and 6,因为4和6距5仅1。
x
5
4, 5 and 6
有内置功能可以做到这一点吗?还是我最好这样写?
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
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; }