Java 在if语句中组合多个条件
我有一个布尔数组(元素的数量可以超过下面的数量): 我想得到数组中所有值与“&&”运算符组合的结果。简而言之,我想做这样的事情:Java 在if语句中组合多个条件,java,algorithm,loops,logic,Java,Algorithm,Loops,Logic,我有一个布尔数组(元素的数量可以超过下面的数量): 我想得到数组中所有值与“&&”运算符组合的结果。简而言之,我想做这样的事情: return values[0] && values[1] && values[2] && values[3] .... ; 但是使用更干净、更自动的方式(例如使用循环) 或者加番石榴: return !Booleans.contains(values, false); 我是C#开发人员,但我知道您可以使用Java8
return values[0] && values[1] && values[2] && values[3] .... ;
但是使用更干净、更自动的方式(例如使用循环)
或者加番石榴:
return !Booleans.contains(values, false);
我是C#开发人员,但我知道您可以使用Java8中的Stream来实现它。比如:
boolean [] values = new boolean[] { false, true, false, false, true, true, false, false };
Stream<Boolean> stream = IntStream.range(0, values.length).mapToObj(idx -> values[idx]);
boolean test = stream.allMatch(i -> i);
boolean[]values=new boolean[]{false,true,false,false,true,true,false,false};
Stream-Stream=IntStream.range(0,values.length).mapToObj(idx->values[idx]);
布尔测试=stream.allMatch(i->i);
如果我错了,请纠正我。谢谢 在Java8+中,可以使用
如果数组中有一个false,则&&的结果为false
知道了这一点,您只需要遍历数组并检查false。如果找到一个,则返回false。如果不返回true。有关代码,请参见shmosel答案。您可以尝试使用foreach循环
boolean answerSoFar = true;
for(boolean value : values){
answerSoFar = answerSoFar && value;
}
return answerSoFar;
(NB@shmosel获得以下第一名)
由于AND条件用于数组中的所有布尔值,因此只要在数组中找到false,也可以返回false;i、 e:
for(boolean value : values){
if(!value){
return false;
}
}
return true;
你不能做
值::[]
?@shmosel这不是很烦人吗。甚至不玩Array
,我能做的就是I->Array.getBoolean(values,I)
或番石榴的Booleans.asList(values)::get
。仍然很臃肿。@shmoseli->values[i]
真的没有那么臃肿。他们可能会在将来为数组访问添加某种合成糖。。。当然,直到Java8才获得lambdas,我想我不会屏息以待。
if (IntStream.range(0, values.length).allMatch(i -> values[i])) {
// all of values are true
}
boolean answerSoFar = true;
for(boolean value : values){
answerSoFar = answerSoFar && value;
}
return answerSoFar;
for(boolean value : values){
if(!value){
return false;
}
}
return true;