gpt4 book ai didi

java - 检查范围内的 int

转载 作者:行者123 更新时间:2023-12-03 02:40:25 25 4
gpt4 key购买 nike

Java 中有没有一种优雅的方法来检查 int 是否等于某个值,或者是否比某个值大/小 1。

例如,如果我检查 x 约为 5。我想在 4、5 和 6 上返回 true,因为 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

通过将参数之一转换为长型 Math.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;
}

关于java - 检查范围内的 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10988968/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com