我正在开展一个项目,但我对这一特定部分感到难过。我需要创建一个方法,如果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数组中的每个值吗?
答案 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;