Jak*_*mpl 169
你可以添加间距;)
if (i > 0 && i < 100)
Run Code Online (Sandbox Code Playgroud)
Vit*_*aly 25
我认为
if (0 < i && i < 100)
Run Code Online (Sandbox Code Playgroud)
更优雅.看起来像数学方程式.
如果您正在寻找特别的东西,您可以尝试:
Math.max(0, i) == Math.min(i, 100)
Run Code Online (Sandbox Code Playgroud)
至少它使用库.
bea*_*eat 25
对于使用公共语言的人来说,选项是使用范围:
Range<Integer> myRange = Range.between(100, 500);
if (myRange.contains(200)){
// do something
}
Run Code Online (Sandbox Code Playgroud)
另请参见:如何构造apache commons 3.1 Range <Integer>对象
Arp*_*ini 15
ValueRange range = java.time.temporal.ValueRange.of(minValue, maxValue);
range.isValidIntValue(x);
Run Code Online (Sandbox Code Playgroud)
true
if minValue <= x <= MaxValue
- 即在范围内false
if x < minValue
或 x > maxValue
- 即超出范围使用if
条件如下图:
int value = 10;
if (ValueRange.of(0, 100).isValidIntValue(value)) {
System.out.println("Value is with in the Range.");
} else {
System.out.println("Value is out of the Range.");
}
Run Code Online (Sandbox Code Playgroud)
下面的程序检查hasTeen
方法中传递的任何整数值是否在 13(含)到 19(含)的范围内。
import java.time.temporal.ValueRange;
public class TeenNumberChecker {
public static void main(String[] args) {
System.out.println(hasTeen(9, 99, 19));
System.out.println(hasTeen(23, 15, 42));
System.out.println(hasTeen(22, 23, 34));
}
public static boolean hasTeen(int firstNumber, int secondNumber, int thirdNumber) {
ValueRange range = ValueRange.of(13, 19);
System.out.println("*********Int validation Start ***********");
System.out.println(range.isIntValue());
System.out.println(range.isValidIntValue(firstNumber));
System.out.println(range.isValidIntValue(secondNumber));
System.out.println(range.isValidIntValue(thirdNumber));
System.out.println(range.isValidValue(thirdNumber));
System.out.println("**********Int validation End**************");
if (range.isValidIntValue(firstNumber) || range.isValidIntValue(secondNumber) || range.isValidIntValue(thirdNumber)) {
return true;
} else
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
true
因为 19 是范围的一部分
true
因为 15 是范围的一部分
false
因为所有三个值都超出了范围
我不知道那是不是很优雅,但如果你经常重复这个表达,那么把它放到一个方法中是个好主意,例如
class MathUtil
{
public static boolean betweenExclusive(int x, int min, int max)
{
return x>min && x<max;
}
}
Run Code Online (Sandbox Code Playgroud)
如果您将独占和包容性比较混合在一起,则尤其如此.方法名称可以帮助避免拼写错误,例如使用<when <=应该使用.该方法还可以确保min <max等.
如果您正在寻找比
if (i > 0 && i < 100)
Run Code Online (Sandbox Code Playgroud)
你可以试试这个
import static java.lang.Integer.compare;
...
if(compare(i, 0) > compare(i, 100))
Run Code Online (Sandbox Code Playgroud)
我认为它已经是比较优雅的方式来比较范围了。但是,这种方法会使您编写额外的单元测试来满足所有&&
情况。
因此,可以使用以下任何一种方法来避免编写额外的单元测试。
使用Java 8流:
if(IntStream.rangeClosed(0,100).boxed().collect(Collectors.toList()).contains(i))
Run Code Online (Sandbox Code Playgroud)
使用数学课:
if(Math.max(0, i) == Math.min(i, 100))
Run Code Online (Sandbox Code Playgroud)
我个人建议第二种方法,因为它最终不会创建大小等于要检查范围的数组。