字符串变量突然变成字母和数字的组合

时间:2014-05-13 17:07:21

标签: java string jlabel

我有一个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 在我初始化时没问题 enter image description here

我不知道为什么 PlayerName 输出

添加时会变得怪异

enter image description here

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

2 个答案:

答案 0 :(得分:10)

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

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

这可能不是你想要的。

您可能想要Playername[i]

答案 1 :(得分:0)

这将在字符串末尾打印数组的某个元素:

String output = "Player " + num + " : " + PlayerName[i];