希望得到比
更优雅的东西if (i>0 && i<100)
答案 0 :(得分:155)
你可以添加间距;)
if (i > 0 && i < 100)
答案 1 :(得分:23)
我认为
C:\Documents and Settings\gcappella\workspace\codenameporc\src>wsimport -s . htt
p://localhost:4321/WS/Rubica?wsdl
analisi di WSDL in corso...
[ERROR] Server returned HTTP response code: 403 for URL: http://localhost:4321/W
S/Rubica?wsdl
Lettura del documento WSDL: http://localhost:4321/WS/Rubica?wsdl non riuscita pe
rché 1) non è stato possibile trovare il documento; 2) non è stato possibile leg
gere il documento; 3) l'elemento radice del documento non è <wsdl:definitions>.
[ERROR] failed.noservice=Impossibile trovare wsdl:service nei WSDL forniti:
È necessario fornire almeno un WSDL con almeno una definizione di servizio.
Analisi di WSDL non riuscita.
C:\Documents and Settings\gcappella\workspace\codenameporc\src>wsimport -s . htt
p://localhost:4444/WS/Rubica?wsdl
analisi di WSDL in corso...
[ERROR] Server returned HTTP response code: 403 for URL: http://localhost:4444/W
S/Rubica?wsdl
Lettura del documento WSDL: http://localhost:4444/WS/Rubica?wsdl non riuscita pe
rché 1) non è stato possibile trovare il documento; 2) non è stato possibile leg
gere il documento; 3) l'elemento radice del documento non è <wsdl:definitions>.
[ERROR] failed.noservice=Impossibile trovare wsdl:service nei WSDL forniti:
È necessario fornire almeno un WSDL con almeno una definizione di servizio.
Analisi di WSDL non riuscita.
C:\Documents and Settings\gcappella\workspace\codenameporc\src>
更优雅。看起来像数学方程式。
如果您正在寻找特别的东西,可以尝试:
if (0 < i && i < 100)
至少它使用了库。
答案 2 :(得分:20)
对于使用公共语言的人来说,选项是使用Range:
Range<Integer> myRange = Range.between(100, 500);
if (myRange.contains(200)){
// do something
}
另见:how to construct a apache commons 3.1 Range<Integer> object
答案 3 :(得分:7)
我不明白这是不是很优雅,但如果你经常重复这个表达,那么把它放到一个方法中是个好主意,例如。
class MathUtil
{
public static boolean betweenExclusive(int x, int min, int max)
{
return x>min && x<max;
}
}
如果您将独占和包容性比较混合在一起,则尤其如此。方法名称可以帮助避免拼写错误,例如使用&lt;什么时候应该使用&lt; =该方法还可以确保min&lt;最大等..
答案 4 :(得分:4)
if (new Range<Integer>(0, 100).contains(i))
或(如果先实施,会更好):
class IntRange extends Range<Integer>
....
if (new IntRange(0,100).contains(i))
语义上两者都比默认情况下Java提供的更好,但内存开销,性能下降和整体输入更加值得。就个人而言,我更喜欢mdma's approach。
答案 5 :(得分:4)
如果您正在寻找比
更原始的东西if (i > 0 && i < 100)
你可以试试这个
import static java.lang.Integer.compare;
...
if(compare(i, 0) > compare(i, 100))
答案 6 :(得分:3)
ValueRange range = java.time.temporal.ValueRange.of(minValue, maxValue);
range.isValidIntValue(x);
如果minValue <= x <= MaxValue-即在范围内
,则返回true如果x
与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.");
}
下面的程序检查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;
}
}
******输出******
true,因为19是范围的一部分
因为15是范围的一部分,所以为
false,因为所有三个值均超出范围
答案 7 :(得分:2)
if ( 0 < i && i < 100)
if ( 'a' <= c && c <= 'z' )
答案 8 :(得分:2)
if(i <= 0 || i> = 100)
它会起作用。
答案 9 :(得分:2)
我认为它已经是比较范围的优雅方式。但是,这种方法会导致您编写额外的单元测试以满足所有&&
个案例。
因此,您可以使用以下任何一种方法来避免编写额外的单元测试。
使用Java 8 Streams:
if(IntStream.rangeClosed(0,100).boxed().collect(Collectors.toList()).contains(i))
使用Math class:
if(Math.max(0, i) == Math.min(i, 100))
我个人推荐第二种方法,因为它不会最终创建一个大小等于你要检查范围的数组。
答案 10 :(得分:1)
尝试:
if (i>0 && i<100) {}
它至少会起作用;)
答案 11 :(得分:1)
使用此代码:
if (lowerBound <= val && val < upperBound)
or
if (lowerBound <= val && val <= upperBound)
答案 12 :(得分:0)
如果您只想测试 i
的值是否在 [0..100) 范围内,并且您想要布尔结果,那么
i >= 0 && i < 100
很好,会给你 true
或 false
。如果您愿意在值超出范围时抛出异常,则可以使用内置的 checkIndex 方法
Objects.checkIndex(i, 100)
如果超出范围将抛出 IndexOutOfBoundsException
。当然,它不是一个通用的解决方案,如果你的上下文是你的范围检查是为了检查数组边界,它真的只是更漂亮,但它的优点是不需要任何第三方库,这对小型程序。
答案 13 :(得分:0)
Google的Java库Guava也实现了Range:
304 not modified
答案 14 :(得分:0)
Range<Long> timeRange = Range.create(model.getFrom(), model.getTo());
if(timeRange.contains(systemtime)){
Toast.makeText(context, "green!!", Toast.LENGTH_SHORT).show();
}
答案 15 :(得分:0)
如果您正在使用Spring数据,则还可以使用Spring中的Range对象。
range = new org.springframework.data.domain.Range(3,8); range.contains(5)将返回true。
答案 16 :(得分:0)
如果您确信数字以2的补充形式存储:
return ((x-low) <= (high-low));
更通用,更安全的解决方案是:
return ((x-high)*(x-low) <= 0);
答案 17 :(得分:0)
你检查的是一个整数是在一个范围内。大于下限,小于上限。试着巧妙地减法可能不会做你想要的。
答案 18 :(得分:-1)
另一种自命不凡的方式:
if (IntStream.rangeClosed(1, 99).anyMatch(x -> x == i)) {
// ...
}
答案 19 :(得分:-1)
if (i in 0..100) {}
请试试这个以获得高效的代码;)
答案 20 :(得分:-4)
val = val < MIN ? MIN : ( val > MAX ? MAX : val);