首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何让特定足球俱乐部的所有球员返回?

如何让特定足球俱乐部的所有球员返回?
EN

Stack Overflow用户
提问于 2018-11-13 19:36:46
回答 3查看 233关注 0票数 1

一般来说,我对IT或Stack溢出并不陌生,但我对java+oop并不熟悉,所以如果语法不正确,请原谅我,我正试图在java中快速升级,并且需要我正在努力改进的项目的帮助。

我正在尝试重建最基本版本的足球教练,到目前为止,我有一个“俱乐部”级和一个“球员”级,我创建了几个俱乐部,有自己的属性和价值观,现在想把球员分配给每个俱乐部。我在每个类中都有一个构造函数,它将为每个俱乐部和球员创建单独的对象,所以当我创建Marcus Rashford时,它看起来是这样的。

代码语言:javascript
复制
Player MarcRash = new Player("Marcus", "Rashford", "CF", 10, 20, Mutd);

穆特,是我之前创建的一个俱乐部对象。

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

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

ie:目前所有的玩家在创建他们的过程中都有相同的对象作为最后一个参数?

代码语言:javascript
复制
void listPlayers(Club club) {
 //something here
}

谢谢你的帮助。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-11-13 19:46:57

你的解决方案在我看来是“倒置”的。不要用固定的俱乐部来创造球员,你应该创造一个没有俱乐部的球员,然后把他们分配给一个俱乐部。

代码语言:javascript
复制
Player marcRash = new Player("Marcus", "Rashford", "CF", 10, 20 );
mutd.add( marcRash );

在用Java编程时,也请遵循Java的编码准则。像marcRushmutd这样的变量名以小写字母开头。

Club中,您只需列出已添加的球员。

代码语言:javascript
复制
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();
  }
}
票数 2
EN

Stack Overflow用户

发布于 2018-11-13 19:46:07

听起来你需要一个叫做联赛的俱乐部类的容器。然后,League类可能包含一个方法,该方法接受Club对象作为参数,并在Club类中调用一个方法来返回其实例中的所有球员(假设,出于任何原因,您需要联赛类中可用的API )。

俱乐部的球员将包含在俱乐部班级的HashSet中。因此,俱乐部类中的一个类变量是:HashSet<Player> players;

不过只是一张纸条。我会用HashSet (而不是ArrayList)来防止在同一个俱乐部重复的球员--这在现实世界里是不可能的。但是为了使用HashSet,包含的元素(Player)需要实现equalshashCode方法。

票数 0
EN

Stack Overflow用户

发布于 2018-11-13 19:50:05

您可以为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 }

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53288328

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档