public void sortingFamilyName(Player player) {
if (player.Zamorak == true) {
godFamily = "Zamorak";
}
if (player.Saradomin == true) {
godFamily = "Saradomin";
}
if (player.Guthix == true) {
godFamily = "Guthix";
}
if (player.Zaros == true) {
godFamily = "Zaros";
}
if (player.Seren == true) {
godFamily = "Seren";
}
if (player.Bandos == true) {
godFamily = "Bandos";
}
if (player.Armadyl == true) {
godFamily = "Armadyl";
}
}
小麻烦。它不起作用。我怎么能这样做,如果Armadyl是真的,那么godFamily会是“Armadyl”吗?
答案 0 :(得分:3)
首先,我认为您应该使用Enum
而不是boolean
变量来确定给定玩家的家庭。然后,您可以将Enum
变量player
与Player.Armady1
进行比较,如下所示:
if (player == Player.Armadyl) {
godFamily = "Armadyl";
}
此外,您应该使用else if
,这样当您与姓氏匹配时,您不会再进行任何比较。
此外,您还可以在toString
中定义Enum
方法,从而避免使用if chain
:
public enum Player {
ZAMORAK { public String toString() { return "Zamorak"; } },
ARMADY { public String toString() { return "Armady1"; } }
}
现在,如果你想获得给定玩家的描述,你只需调用它的toString
方法。
答案 1 :(得分:1)
虽然我没有看到你的所有代码,但看起来你可能会因使用enum for family name而不是一堆布尔字段而受益。您只需要一个Player.familyName字段(或任何您想要调用的字段),其中包含您定义的FAMILY_NAME枚举类型。
答案 2 :(得分:0)
布尔值来自哪里?我会更改它,所以不要将布尔值设置为true,而是直接写入字符串player.godFamily并检查它。
答案 3 :(得分:0)
除了第一个之外,您似乎应该使用else if
代替if
。在您的代码中,如果多个true
,那么godFamily将被设置为最后一个真实的。