如何打印出输入的ArrayList

时间:2014-12-15 20:36:36

标签: java arraylist output println

我正在尝试打印出我为ArrayList输入的内容,但是当我清楚地输入合法名称时,我会继续得到奇怪的结果,例如[player@42a57993, player@75b84c92, player@6bc7c054]。所以看看我的代码,看看问题可能是什么:

if (o == 5) {
    double RD, t, old, x;
    String tournament, player;
    int a, number_of_players, place;
    ArrayList<player> players = new ArrayList<player>();
    System.out.println("1:Add a tournament \t2:View Existing");
    a = keyIn.nextInt();
        if (a == 1) {
            System.out.println("\nEnter tournament name");
            tournament = keyIn.next();
            System.out.println("\nEnter number of players");
            number_of_players = keyIn.nextInt();
            System.out.println("Enter players");
            for (int i = 0; i < number_of_players; i++) {
                String name = keyIn.next();
                player plr = new player();
                plr.setName(name);
                players.add(plr);
            }
            System.out.println("Enter places for");
            System.out.println(players);
            place = keyIn.nextInt();

这是我的player课程:

public class player {

    private static String name;

    public void setName(String pName)
    {
        name = pName;
    }

    public String getName()
    {
        return name;
    }
}

让我知道你们想出的是什么!谢谢!

2 个答案:

答案 0 :(得分:6)

您看到的是toString的默认实现的输出。 它是类名后跟@和哈希码的无符号十六进制表示。

要更改此设置,请在toString课程中实施Player方法,例如:

public class Player {

    private String name;

    public void setName(String pName) {
        name = pName;
    }

    public String getName() {
        return name;
    }

    @Override
    public String toString() {
        return "Player{name='" + name + "'}";
    }
}

答案 1 :(得分:1)

在添加项目后,Java对局部变量名称没有任何线索。当您运行Collections.toString时,它只会调用toString中所有实例的ArrayList方法。

您应该覆盖toString方法:

public class player {

    private static String name;

    public void setName(String pName) {
        name = pName;
    }

    public String getName() {

        return name;
    }

    @Override
    public String toString () {
        return name;
    }

}

toString方法指定Player个实例的文本表示。默认的toString方法是打印实例的类及其在内存中的位置。

当然有其他方法可以产生文字表示。