2016-03-24 6 views
0

Ich erstelle ein Spiel und muss überprüfen, ob alle Spieler in der Spielerliste alle ihre Spiele gespielt haben. Ich mache das, indem ich die Variable noOfGames wegnehme, bis sie 0 ist. Mein Problem mit meinem Code ist, dass das Spiel endet, wenn der letzte Spieler in der playerList beendet ist. Hier ist mein Code:Wie kann ich überprüfen, ob jedes Objekt in meiner ArrayList einen Wert gleich Null hat?

public boolean isGameOver(){ 
     boolean allEqualsZero = true; 

     for(Player i : playerList){ 
      if (i.getNoOfGames() != 0){ 
       allEqualsZero = false; 
      } 
      else{ 
       allEqualsZero = true; 
      } 
     } 
     return allEqualsZero; 
} 

Antwort

4

Ihre boolean Variable kann für jeden Spieler ändern.

Das Spiel ist vorbei, wenn jemand etwas hat, zu spielen, also wenn jemand noch zu spielen hat, direkt false zurück.

Wenn niemand etwas hat, geben Sie am Ende true zurück.

public boolean isGameOver() { 
    for (Player i : playerList) { 
     if (i.getNoOfGames != 0) return false; 
    } 
    return true; 
} 

Sie können sonst eine stream verwenden, wenn Sie

public boolean isGameOver(){ 
    return playerList.stream() 
        .allMatch(x -> x.getNoOfGames() == 0); 
} 
+1

dass java-8 tag drin ist so boss. –

0

Das Problem mit diesem Code verwenden, ist, dass es, ob kehrt der letzte Spieler-0 entspricht. Also, was Sie tun sollen, ist, wenn ein Spieler 0 Rückkehr gleich false, sonst true zurückkehren, so etwas wie die:

for(Player i : playerList){ 
    if (i.getNoOfGames() != 0) return false; 
} 
return true; 
0

Der einfachste Weg, es zu tun, ist durch Java 8 Streams mit:

public boolean isGameOver(){ 
    return playerList.stream().allMatch(player -> player.getNoOfGames() == 0); 
} 

allMatch eine Funktion übernehmen, die alle Spieler überprüft, ob die Anzahl der Spiele 0 und true zurück, wenn alle 0.

prüfen the documentation für mehr informati auf.

+0

Ich denke du meinst 'allMatch (Prädikat )' –

+0

In der Tat! Weiß nicht wie ich das durcheinander gebracht habe. –

+1

Lol es passiert :) –

Verwandte Themen