2016-03-24 12 views
0

私はゲームを作成しており、playerListのすべてのプレイヤーがすべてのゲームをプレイしたかどうかを確認する必要があります。これは、0になるまでnoOfGames変数から取り除くことで行います。私の問題は、playerListの最後のプレーヤーが終了した場合、ゲームが終了することです。ここに私のコードは次のとおりです。ArrayList内のすべてのオブジェクトの値が0であるかどうかを確認するにはどうすればよいですか?

public boolean isGameOver(){ 
     boolean allEqualsZero = true; 

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

答えて

4

あなたboolean変数は、各プレイヤーのために変更されることがあります。

誰かが何かをプレイしている場合はゲームが終了しているので、誰かがまだプレイしなければならない場合は、直接falseを返します。

誰も何も持っていない場合は、最後にtrueを返してください。

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

あなたは

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

そこのjava-8タグは上司です。 –

0

を使用している場合は、それ以外のstreamを使用することができ、このコードの問題は、それが最後のプレイヤー0に等しいかどうかを返すことです。

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

それを行うための最も簡単な方法、Javaの8つのストリームを使用することです::

public boolean isGameOver(){ 
    return playerList.stream().allMatch(player -> player.getNoOfGames() == 0); 
} 
いずれかのプレイヤーが 0リターン falseに等しく、そうでない場合は trueを返し、そのような何かのであれば、あなたが何をすべきか、あります

allMatchは、ゲームの数が0の場合、すべての選手をチェックする機能を取り、すべてがよりinformatiのための0

チェックthe documentationである場合にのみtrueを返しますに。

+0

私はあなたが 'allMatch(述語)' –

+0

を意味すると思います!私が混乱してしまったのだ。 –

+1

笑それは起こる:) –

関連する問題