我通常对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
}
感谢您的帮助。
答案 0 :(得分:2)
您的解决方案对我来说似乎是“颠倒的”。您应该创建一个没有俱乐部的球员,而不是创建具有固定俱乐部的球员,然后将他们分配给俱乐部。
Player marcRash = new Player("Marcus", "Rashford", "CF", 10, 20 );
mutd.add( marcRash );
使用Java进行编程时,请也遵循Java的编码准则。变量名marcRush
和mutd
以小写字母开头。
在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,包含的元素(播放器)将需要实现方法equals
和hashCode
。
答案 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
}