java在枚举中查找最高值
我正在为我正在制作的游戏制作一个类,但我不知道如何向用户返回最高的“奖励”:
我想让它做的是根据玩家的杀戮回报奖励。如果他有38次杀戮,应该只会返回300次。也不是150
class EnumTest {
private static int playerKills = 38;
private enum KillReward {
BEGINNER(10, 150),
JUNIOR(25, 300),
EXPERT(50, 500),
CHAMPION(100, 1000);
private KillReward(int kills, int reward) {
this.kills = kills;
this.reward = reward;
}
private int kills, reward;
private int getKillsNeeded() {
return kills;
}
private int getKillReward() {
return reward;
}
}
public static void main (String[] args) {
for (KillReward k : KillReward.values()) {
if (playerKills > k.getKillsNeeded()) {
System.out.println("Kills: " + playerKills + "; Reward: " + k.getKillReward());
}
}
}
}
# 1 楼答案
有几种方法可以做到这一点
一种简单的方法是将奖励分配给变量。在循环结束时,下面的
reward
变量将是适用的最高杀戮奖励请注意,这取决于枚举的顺序,而枚举有时可能很脆弱。例如,如果在CHAMPION之后添加了一个新的KillReward枚举,但其KillsNeed值较低,那么它将不会返回正确的值
更好的解决方案是创建一个比较器,并使用它按killsNeeded优先对枚举值进行排序,从而确保它们总是有序的。如果你也按降序排序,那么一旦你点击了第一个合适的循环,你也可以中断循环