我有一个JLabel PlayerLabel数组和PlayerName数组,它通过以下方式初始化

        String [] PlayerName;
        PlayerName = new String[4];
        for (int i=0;i<4;i++)
        {
            PlayerName[i] = "None1";

        }

JLabel [] PlayerLabel;

PlayerLabel = new JLabel[4];

        for (int i=0;i<4;i++)
        {
            String num = Integer.toString(i);
            String output = "Player " + num + " : " + PlayerName;

            PlayerLabel[i] = new JLabel(output);
            PlayerLabel[i].setForeground(Color.white);

        }


我希望我的JLabel文本是


  玩家1:无1


相反,我越来越


  播放器1:java.lang.String; @ 4e9fd887


每次重新启动程序时,@15150ef8部分都会更改为数字和字母的不同组合。

当我初始化PlayerName时还可以


我不知道为什么在输出中添加PlayerName时会变得怪异



发生了什么事,我该如何解决这个问题?

最佳答案

当您执行+ Playername时,您将打印数组本身,而不是数组中的元素。当您尝试将对象连接为字符串时,将调用对象的toString()方法,并且数组从toString()继承其Object

public String toString() {
    return getClass().getName() + "@" + Integer.toHexString(hashCode());
}


那可能不是您想要的。

您可能想做Playername[i]

10-01 02:54