我的问题是我有一个班级,其中有另一个班级的元素列表。
public class Branch
{
private ArrayList<Player> players = new ArrayList<Player>();
String brName;
public Branch() {}
public void setBr(String brName){this.brName = brName;}
public String getBr(){return brName;}
public ArrayList<Player> getPlayers() { return players; }
public void setPlayers(ArrayList<Player> players) { this.players =new ArrayList<Player>(players); }
}
public class Player
{
private String name;
private String pos;
private Integer salary;
private Integer number;
public Player(String name, String pos, Integer salary, Integer number)
{
this.name = name;
this.pos = pos;
this.salary = salary;
this.number = number;
}
public Player(){}
public String getName() { return name; }
public String getPos() { return pos; }
public Integer getSalary() { return salary; }
public Integer getNumber() { return number; }
public void setName(String name) { this.name = name; }
public void setPos(String pos) { this.pos = pos; }
public void setSalary(Integer salary) { this.salary = salary; }
public void setNumber(Integer number) { this.number = number; }
}
我的问题是打印一个分支的玩家,他们的名字,位置,工资,数字。 为此我简单地尝试了这个:
String p1,p2;
int a1,a2;
p1 = input.readLine();
p2 = input.readLine();
a1 = Integer.parseInt(input.readLine());
a2 = Integer.parseInt(input.readLine());
players[0].setName(p1);
players[0].setPos(p2);
players[0].setSalary(a1);
players[0].setNumber(a2);
ptmp.add(players[0]);
myBranch[0].setPlayers(ptmp);
System.out.println(myBranch[0].brName + " " + myBranch[0].getPlayers());
我写这篇文章只是为了尝试如何显示。我创建了一系列玩家和分支,因此他们已经定义了。问题是getPlayers()
没有给我任何结果。这样做的方法是什么?
答案 0 :(得分:1)
当您尝试println
或连接ArrayList时(就像执行" " + myBranch[0].getPlayers()
时一样),调用方法ArrayList.toString()
以返回列表内容的String表示。< / p>
ArrayList.toString()
将返回一个String,其中包含列表中每个元素的toString()
结果(此行为实际上是在其中一个父类AbstractCollection
中定义的。
由于您的Player类未覆盖toString()
提供的java.lang.Object
实现,因此输出可能类似于packagename.Player@a8f123
。
因此,如果您希望在ArrayList.toString()
个对象列表上调用Player
时获得有意义的输出,则应覆盖toString()
中的Player
以提供1}}您希望返回的字符串表示形式。
答案 1 :(得分:0)
++对于暗淡的说法。你可以做的另一种方法是覆盖分支上的toString,这样循环遍历数组列表并返回每个Player的信息(也许调用matt b推荐的toString在Player类上定义)。
答案 2 :(得分:0)
为Player类提供一个toString()方法:
@Override
public String toString() {
return "Player [name=" + name + ", number=" + number + ", pos=" + pos
+ ", salary=" + salary + "]";
}
答案 3 :(得分:0)
没有人说过的是,通过使用矢量,以你的方式,让你有机会简单地用this.add()
来初始化新玩家,这当然会导致玩家的深度复制但是他们在他们的小房间里会很好,他们可以从那里玩。这比每次宣布新玩家时制作一个新阵列更好。