我试图制作一个空白来检查某些事情是否属实,如果有的话,根据真实情况做一个字符串说出来

时间:2010-08-24 15:42:04

标签: java

     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”吗?

4 个答案:

答案 0 :(得分:3)

首先,我认为您应该使用Enum而不是boolean变量来确定给定玩家的家庭。然后,您可以将Enum变量playerPlayer.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将被设置为最后一个真实的。