如何返回特定足球俱乐部中的所有球员

时间:2018-11-13 19:36:46

标签: java class oop

我通常对IT或Stack Overflow并不陌生,但对java + oop并不陌生,所以如果语法不正确,请原谅我, 我正在尝试相当快地升级Java,并且需要有关我正在改进的项目的帮助。

我正在尝试重新创建最基本的足球经理版本,到目前为止,有一个“俱乐部”类和一个“球员”类,我创建了一些具有各自属性和价值观的俱乐部,现在喜欢分配球员到每个俱乐部。我在每个班级都有一个构造函数,它将为每个俱乐部和球员创建单独的对象,因此当我创建Marcus Rashford时,它看起来像这样。

Player MarcRash = new Player("Marcus", "Rashford", "CF", 10, 20, Mutd);

Mutd,它是我之前创建的Club对象。

他的衬衫号码是10 20岁是他的年龄//不重要

问题: 如何在我的Club类中创建一个方法,该方法将列出当前分配给每个俱乐部的所有球员?

ie:当前所有与创建对象的最后一个参数具有相同对象的玩家吗?

void listPlayers(Club club) {
 //something here
}

感谢您的帮助。

3 个答案:

答案 0 :(得分:2)

您的解决方案对我来说似乎是“颠倒的”。您应该创建一个没有俱乐部的球员,而不是创建具有固定俱乐部的球员,然后将他们分配给俱乐部。

Player marcRash = new Player("Marcus", "Rashford", "CF", 10, 20 );
mutd.add( marcRash );

使用Java进行编程时,请也遵循Java的编码准则。变量名marcRushmutd以小写字母开头。

Club内,您可以仅列出已添加的玩家。

public class Club {
   private ArrayList<Player> members = new ArrayList<>();

   public void add( Player player ) {
      members.add( player );
   }

   public String listMemebers() {
     if( members.size() == 0 ) return "";
     StringBuilder sb = new StringBuilder();
     for( Player p : members ) {
       sb.append( p.getFirstName() );
       sb.append( " " );
       sb.append( p.getLastName() );
       sb.append( ", " );
    }
    sb.setLength( sb.length()-2 );
    return sb.toString();
  }
}

答案 1 :(得分:0)

听起来您需要一个名为League的俱乐部班级的容器。然后,联赛类可能包含一个方法,该方法将一个Club对象作为参数,并在Club类中调用一个方法以返回其实例中的所有玩家(假设,无论出于何种原因,您都需要在该League类中使用此API)

俱乐部的球员将包含在俱乐部类的HashSet中。因此,Club类中的类变量为: HashSet<Player> players;

不过只是一个音符。我会使用HashSet(而不是ArrayList)来防止同一家具乐部中的重复玩家-在现实世界中这是不可能的。但是,为了使用HashSet,包含的元素(播放器)将需要实现方法equalshashCode

答案 2 :(得分:0)

您可以像这样为Club对象创建一个列表

https://docs.oracle.com/javase/8/docs/api/java/util/List.html

List<Player> players; 然后在构造函数中,将每个玩家添加到列表中。 这种类型的结构将使您拥有与俱乐部相关的所有球员

然后,您可以构建方法以在列表上打印每个对象

List<Player> listPlayers(Club club) { //Loop through the elements on the list // print each Player }