2010-06-09 59 views
1

我的问题是我有一个类,并在其中有另一个类的元素列表。在Java中显示一个类的内容的问题

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

“没有结果”究竟是什么 - 它是一个空的列表,还是你的答案中提到了一些像马特b一样神秘的东西? – 2010-06-09 12:45:14

回答

1

当您尝试println或连接一个ArrayList(因为你正在做的,当你做" " + myBranch[0].getPlayers(),该方法ArrayList.toString()调用返回列表中的内容的String表示。

ArrayList.toString()将返回包含结果的字符串列表中的每个元素的toString()(这种行为实际上是在它的一个定义是父类AbstractCollection

由于您的播放器类不覆盖由java.lang.Object提供的toString()执行,输出可能somethi像[email protected]

所以,如果你想有有意义的输出,当你Player对象的列表上调用ArrayList.toString(),你应该重写toString()Player提供Player你想有返回的字符串表示。

0

++对马特b说什么。另一种方法是在分支上覆盖toString,这样就可以遍历数组列表并返回每个Player的信息(也许调用Matt推荐在Player类中定义的toString)。

0

给玩家类的toString()方法,因为这样:

@Override 
public String toString() { 
    return "Player [name=" + name + ", number=" + number + ", pos=" + pos 
      + ", salary=" + salary + "]"; 
} 
0

什么没有人还没有说,是通过使用一个载体,你有办法,给你的机会,简单地采取行动与this.add()初始化新玩家,这当然会造成玩家的深层复制,但他们会在他们的小房间里玩,从那里玩。这比每次宣布新玩家时制作新的阵列都要好。