如何打印出输入的ArrayList

Kev*_*wis -1 java arraylist println output

我正在尝试打印出我为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();
Run Code Online (Sandbox Code Playgroud)

这是我的player班级:

public class player {

    private static String name;

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

    public String getName()
    {
        return name;
    }
}
Run Code Online (Sandbox Code Playgroud)

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

Sto*_*ica 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 + "'}";
    }
}
Run Code Online (Sandbox Code Playgroud)