addPlayer()方法不返回任何值

时间:2010-09-13 20:59:39

标签: java

我正在编写一个代码来整理一个慈善橄榄球队,我要编写一个名为addPlayer()的方法,该方法需要两个字符串争论,玩家姓名,如果是名人或专业人士,还有一个性别的char参数。该方法不返回任何值。此方法创建一个具有给定名称,分类和性别的Player的新实例,并将其添加到名人或教授的适当球员集合中。

我有一个populatePlayerLists()方法

public void populatePlayerLists()
{

   this.addPlayer("Robbie Williams","Celebrity",'M');
   this.addPlayer("Robbie Fowler","Professional",'M');

}

我的实例变量如下

private List < Player > professionalsList;
private List< Player > celebritiesList;

我的addPlayer()方法如下

public void addPlayer(String name, String classification,char gender)
{

   { 
      this.professionalsList.add(new Player(name, classification, gender)); 
      this.celebritiesList.add(new Player(name, classification, gender)); 
   } 
}

玩家和名人添加到列表中,但是当我希望名人转到一个列表并且专业人员转到其他帮助时,他们会添加到两个列表中。

3 个答案:

答案 0 :(得分:5)

您可以使用此String系统并使用equals()检查字符串的值。

Player player = new Player(name, classification, gender);
if (classification.equals("Celebrity")) {
   this.celebritiesList.add(player);
} else if (classification.equals("Professional"))
   this.professionalsList.add(player); 
}

或者您可以将系统更改为使用枚举(方式,方式更好):

public enum Classification{
    Professional,
    Celebrity;
}

public enum Gender{
    Male,
    Female;
}

public void addPlayer(String name, Classification classification, Gender gender){ 
    Player player = new Player(name, classification, gender);
    if (classification == Classification.Celebrity) {
       this.celebritiesList.add(player);
    } else if (classification == Classification.Professional){
       this.professionalsList.add(player); 
    }
}

//...    
this.addPlayer("Robbie Williams", Classification.Celebrity, Gender.Male);
this.addPlayer("Robbie Fowler", Classification.Professional, Gender.Male);

您甚至可以使用switch(但我不会使用它):

Player player = new Player(name, classification, gender);
switch(classification){
    case Celebrity : 
        this.celebritiesList.add(player);
        break;
    case Professional : 
        this.professionalsList.add(player);
        break;
    default :
        System.out.println("FileNotFound");
}

答案 1 :(得分:1)

简单if语句会这样做:

public void addPlayer(String name, String classification,char gender)
{
    if (classification.equals("Professional"))
        this.professionalsList.add(new Player(name, classification, gender));
    else
        this.celebritiesList.add(new Player(name, classification, gender)); 
}

public void addPlayer(String name, String classification,char gender)
{
    if (classification.equals("Professional"))
        this.professionalsList.add(new Player(name, classification, gender));
    else if (classification.equals("Celebrity"))
        this.celebritiesList.add(new Player(name, classification, gender)); 
    else
        throw new RuntimeException("unknown classification: " + classification);
}

答案 2 :(得分:1)

看起来你错过了选择添加哪个列表的逻辑?像

这样的东西
if (classification.equals("Celebrity")) {
   this.celebritiesList.add(new Player(name, classification, gender));
} else {
   this.professionalsList.add(new Player(name, classification, gender)); 
}