所以基本上我有一个
public class Tournament {
private int [] par; // stores par for each hole in the golf course.
private ArrayList<Player> players; // stores the list of players.
public static final int NUMHOLES = 18; // constant.
和
public ArrayList<Player> getPlayers() {
return players;
}
但是现在我要为玩家阵列列表输入名称和障碍。
public void enter(String aName, int aHandicap) {
}
如何创建enter()方法?
我试过了
//players.add(aName); players.add(aHandicap);
//players.addAll(aName, aHandicap));
并且没有骰子。任何帮助都得到了回应
答案 0 :(得分:6)
您的抽象错误。他的名字和差点是该球员的属性。它不是列表中的属性!
因此,您向Player类添加字段,然后直接在构造函数中初始化它们,或者提供setter方法。从概念上讲,名称应该可以通过构造函数进入 - 因为名称应该是不可变的,并且在创建Player之后不会更改。而障碍可能会改变;所以有一个 setter方法将是更好的选择!
然后,您可以迭代您的Player对象列表,并在 Player 对象上调用这些setter方法,而不是列表。
换句话说:您的课程/对象是现实的模型。所以你的玩家类应该代表一个人类玩家正在等待的那些方面。鉴于模型的更大背景,这是有意义的。
即使你认为你的Player类应该不知道这些事情,你仍然创建一个抽象,如:
public class EnhancedPlayer { // could extend Player
that has those other fields
你知道,你的问题会变成:让我们一起代表属于的几条信息......将它们放在不同的列表中;和#34;普通&#34;索引意味着:东西属于一起。
最后,直接回答:你不能这样做;你不应该这样做。如果你有List<Player>
,那么你只能将玩家对象添加到该列表中!
答案 1 :(得分:2)
name
的{{1}}和handicap
是其身份的一部分,因此它们应该是班级Player
的两个字段,所以:
假设您的班级Player
如下:
Player
然后您的方法public class Player {
private String name;
private int handicap;
public Player(final String name, final int handicap) {
this.name = name;
this.handicap = handicap;
}
// Getters (and setters if needed)
}
将是:
enter
答案 2 :(得分:0)
您正在尝试将字符串和数字添加到播放器列表中。
您需要先创建一个播放器,然后将播放器添加到列表中。它不会为你自动创建一个玩家只是因为你把它构建一个所需的部分。