如何检查ArrayList中的每个对象是否具有等于零的值?

时间:2016-03-24 19:04:24

标签: java arraylist

我正在创建一个游戏,需要检查playerList中的所有玩家是否都玩过所有游戏。我通过取消noOfGames变量直到它为0来做到这一点。我的代码现在的问题是如果playerList中的最后一个玩家已经完成,则游戏结束。这是我的代码:

public boolean isGameOver(){
        boolean allEqualsZero = true;

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

3 个答案:

答案 0 :(得分:4)

您的boolean变量可能会因每位玩家而改变。

如果有人玩某些东西,游戏就结束了,所以如果有人还要玩,请直接返回false

如果没有人有东西,请在最后返回true

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

如果您使用

,则可以使用stream
public boolean isGameOver(){
    return playerList.stream()
                     .allMatch(x -> x.getNoOfGames() == 0);
}

答案 1 :(得分:0)

此代码的问题在于它返回最后一个玩家是否等于0。那么你应该做的是,如果任何一个玩家等于0返回false,否则返回true,就像这样:

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

答案 2 :(得分:0)

最简单的方法是使用Java 8 Streams:

public boolean isGameOver(){
   return playerList.stream().allMatch(player -> player.getNoOfGames() == 0);
} 
如果游戏数量为0,

allMatch将采用一种能够检查所有玩家的功能,只有当所有玩家都为0时才会返回true。

查看the documentation了解详情。