我正在尝试打印出我为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;
}
}
让我知道你们想出的是什么!谢谢!
答案 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
方法是打印实例的类及其在内存中的位置。
当然有其他方法可以产生文字表示。