Pie*_*888 2 java comparison integer if-statement
在java中是否有一种优雅的方法来检查int是否等于或大于/小于值1.
例如,如果我检查x一下5.我想要回归真实4, 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
}
Run Code Online (Sandbox Code Playgroud)
当然上面的代码很丑陋,难以阅读.那么还有更好的方法吗?
找出它们之间的绝对差异 Math.abs
private boolean close(int i, int j, int closeness){
return Math.abs(i-j) <= closeness;
}
Run Code Online (Sandbox Code Playgroud)
基于@GregS关于溢出的注释,如果你给出Math.abs一个不适合整数的差异,你将获得溢出值
Math.abs(Integer.MIN_VALUE - Integer.MAX_VALUE) //gives 1
Run Code Online (Sandbox Code Playgroud)
通过将其中一个参数强制转换为long Math.abs将返回一个长含义,即将正确返回差异
Math.abs((long) Integer.MIN_VALUE - Integer.MAX_VALUE) //gives 4294967295
Run Code Online (Sandbox Code Playgroud)
因此,考虑到这一点,该方法现在将如下所示:
private boolean close(int i, int j, long closeness){
return Math.abs((long)i-j) <= closeness;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1540 次 |
| 最近记录: |