繁体   English   中英

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

[英]Checking if all entries in a 2d Boolean array are true/false using a method in Java?

我正在做一个项目,但在这个特定的部分感到很困惑。 我需要创建一个方法,如果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数组中的每个值的方法?

通常,像您这样的逻辑应采用以下形式:

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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM