在if语句中组合多个条件

时间:2017-03-17 00:05:34

标签: java algorithm loops logic

我有一系列布尔值(元素数量可能超过以下数量):

boolean [] values = new boolean[] { false, true, false, false, true, true, false, false };

我想得到的结果是将数组中的所有值与"&&"运营商。简而言之,我想做这样的事情:

return values[0] && values[1] && values[2] && values[3] .... ;

但是使用更清洁和自动的方式(例如使用循环)

5 个答案:

答案 0 :(得分:3)

static boolean and(boolean... values) {
    for (boolean value : values) {
        if (!value) {
            return false;
        }
    }
    return true;
}

或者与番石榴:

return !Booleans.contains(values, false);

答案 1 :(得分:3)

你可以尝试一个foreach循环

boolean answerSoFar = true;
for(boolean value : values){
   answerSoFar = answerSoFar && value;
}
return answerSoFar;

(NB @shmosel首先得到以下内容) 由于AND条件用于数组中的所有布尔值,因此只要在数组中找到false,您也可以返回false;即:

for(boolean value : values){
    if(!value){
      return false;
    }
}
return true;

答案 2 :(得分:1)

在Java 8+中,您可以使用IntStream之类的

if (IntStream.range(0, values.length).allMatch(i -> values[i])) {
    // all of values are true
}

答案 3 :(得分:0)

我是C#开发人员,但我知道您可以在Java 8中使用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);

如果我错了,请纠正我。谢谢!

答案 4 :(得分:0)

如果阵列中有一个假,那么&amp;&amp;的结果是假的。

知道这一点,你只需要通过你的数组并检查是否错误。如果找到一个,则返回false。如果你不回真。请参阅shmosel答案以获取代码。