使用Java中的方法检查2d布尔数组中的所有条目是否为true / false?

时间:2017-12-06 22:22:29

标签: java arrays methods boolean

我正在开展一个项目,但我对这一特定部分感到难过。我需要创建一个方法,如果2d数组中的所有条目都为false,则返回布尔值true;如果只有1个值为true,则返回false。目前,我在方法中的代码类似于:

int counter = 0;
  for (int i = 0; i < lightArray.length; i++){
     for(int j = 0; j <lightArray[0].length; i++) {
        if (lightArray[i][j] == false) {
           counter++;
           if (counter == lightArray.length * lightArray[0].length) {
              return true;
           }
        }
        else {
           return false;
        }
     }
  }

我的初步想法是我会使用'counter'变量,这样if语句只有在lightArray中的每个值都有一个'counter'时才会返回true。经过测试,当所有值都设置为false时,它似乎没有注册。

我还尝试了本节的代码版本

if (lightArray[i][j] == false) {
           counter++;
           if (counter == lightArray.length * lightArray[0].length) {
              return true;

}

只读为:

if (lightArray[i][j] == false) {
              return true;

根本没有涉及'counter'变量,但是当该代码到位时,只要遇到一个false值,该方法就会返回true。

还有另一种方法,我只是没想到我可以在返回布尔值之前检查2D数组中的每个值吗?

1 个答案:

答案 0 :(得分:1)

通常你所拥有的逻辑应采用以下形式:

loop{
    if (negative_condition) return false;            
}
return true;

请注意return true不在循环中。

在你的情况下你有嵌套循环,它应该是这样的:

loop{
    loop{
        if (negative_condition) return false;  
    }          
}
return true;

查看上面的伪代码,您的Java代码应如下所示:

for (int i = 0; i < lightArray.length; i++){
    for(int j = 0; j <lightArray[0].length; j++) {
       if (lightArray[i][j] == true) return false;
    }
 }

 return true;