2017-12-06 7 views
0

私はプロジェクトに取り組んでいますが、私はこの特定のセクションで困っています。 2d配列のすべてのエントリがfalseの場合はブール値trueを返すメソッドを作成し、それらの値のうち1つでもtrueの場合はfalseを返します。現在、メソッド内の私のコードは次のようになります。Javaのメソッドを使用して、2dブール配列のすべてのエントリが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; 
     } 
    } 
    } 

私inititalの思考は、文のみtrueを返すかどうように、すべての値のための「カウンターが」あった場合、私は「カウンタ」変数を使用するというものでしたlightArrayテストの後、すべての値がfalseに設定されていると登録されていないようです。全く関係のない 'カウンタ' 変数と

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

、しかし:

Iは、このセクション

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

}

だけで、このように読み取ったコードのバージョンを試しそのコードがあると、このメソッドは単一のfalse値になるとすぐにtrueを返します。

ブール値を返す前に2次元配列のすべての値をチェックできるという別の方法がありますか?

+0

*「メソッドの戻りを単一の偽の値にヒットしたらすぐに真です。 "*逆のことをする:単一の'真の値になるとすぐに 'false'を返します。それが起こらずに配列全体を調べると、 'false'値しか含まれていないことがわかります。 – TNT

+0

うわー、ありがとう、私はそれを見たはずです、そして、私は助言に感謝します。 –

答えて

1

通常あなたのようなロジックは、このフォームにする必要がありますしている:return trueがループの外にあることを

loop{ 
    if (negative_condition) return false;    
} 
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; 
関連する問題