[英]Is it possible to construct a Java stream expression to return a 2D boolean array, all values set to true?
[英]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.