2010-06-09 54 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()初始化新玩家,這當然會造成玩家的深層複製,但他們會在他們的小房間裏玩,從那裏玩。這比每次宣佈新玩家時製作新的陣列都要好。