2017-12-06 1 views
0

Ich arbeite an einem Projekt, aber ich fühle mich in diesem bestimmten Abschnitt ratlos. Ich muss eine Methode erstellen, die einen booleschen Wert True zurückgibt, wenn alle Einträge in einem 2-D-Array falsch sind, und False zurückgibt, wenn nur 1 dieser Werte wahr ist. Derzeit ähnelt mein Code innerhalb der Methode folgt aus:Prüfen, ob alle Einträge in einem booleschen 2d-Array mit einer Methode in Java wahr/falsch sind?

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; 
     } 
    } 
    } 

Mein initital Gedanke war, dass ich einen ‚Zähler‘ Variable verwenden würde, so dass die if-Anweisung nur true zurückgeben würde, wenn es ein ‚Zähler‘ war für jeden Wert in LichtArray. Nach dem Testen scheint es nicht zu registrieren, wenn alle Werte auf "false" gesetzt sind.

Ich habe auch versucht, eine Version des Codes, in dem dieser Abschnitt

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

}

wie diese lesen:

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

ohne 'counter' Variable an alle Beteiligten, aber Wenn dieser Code vorhanden ist, gibt die Methode true zurück, sobald ein einzelner falscher Wert gefunden wird.

Gibt es eine andere Möglichkeit, dass ich nicht daran denke, dass ich jeden Wert im 2D-Array überprüfen kann, bevor ich einen booleschen Wert zurückgebe?

+0

* "die Methode zurückgibt wahr, sobald es einen einzigen falschen Wert erreicht. "* Haben Sie das Gegenteil getan: Geben Sie' false' zurück, sobald es einen einzigen 'wahren' Wert erreicht. Wenn Sie das gesamte Array durchgehen, ohne dass dies passiert, dann wissen Sie, dass es nur "falsche" Werte enthält. – TNT

+0

wow yeah danke, ich hätte das sehen sollen, und ich schätze den Rat –

Antwort

1

Normalerweise ist die Logik wie Sie haben in dieser Form sein sollte:

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

Beachten Sie, dass return true außerhalb der Schleife.

In Ihrem Fall haben Sie Schleife verschachtelt, die sollte wie folgt aussieht:

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

Mit Blick auf die oben Pseudo-Code, Java-Code sollte wie folgt aussehen:

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; 
Verwandte Themen