我正在创建一个游戏,需要检查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;
}
答案 0 :(得分:4)
您的boolean
变量可能会因每位玩家而改变。
如果有人玩某些东西,游戏就结束了,所以如果有人还要玩,请直接返回false
。
如果没有人有东西,请在最后返回true
。
public boolean isGameOver() {
for (Player i : playerList) {
if (i.getNoOfGames != 0) return false;
}
return true;
}
如果您使用java-8
,则可以使用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了解详情。