Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在if语句中组合多个条件_Java_Algorithm_Loops_Logic - Fatal编程技术网

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
。仍然很臃肿。@shmosel
i->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;