在Java中显示类的内容时出现问题

时间:2010-06-09 12:24:16

标签: java class arraylist

我的问题是我有一个班级,其中有另一个班级的元素列表。

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()没有给我任何结果。这样做的方法是什么?

4 个答案:

答案 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 :(得分: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()来初始化新玩家,这当然会导致玩家的深度复制但是他们在他们的小房间里会很好,他们可以从那里玩。这比每次宣布新玩家时制作一个新阵列更好。