我有一个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 在输出
添加时会变得怪异
发生了什么,我该如何解决这个问题?
答案 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];