这可能是一个愚蠢的问题,但令我感到沮丧。我在循环期间在循环外添加到我的数组列表中的对象,所有数组列表都被数组中的最后一个元素覆盖。它就是这样的。
while(fin.hasNextLine())
{
String line = fin.nextLine();
String[] user = line.split(",");
r.add(new User(user[0], user[1]));
System.out.println(r.get(count).getName());
count++;
}
这在循环期间给出了类似这样的输出(USER1,USER2,USER3等)。 但是,在循环之后,我现在有一个像这样的输出(USER500,USER500,USER500)。
while(fin.hasNextLine())
{
String line = fin.nextLine();
String[] user = line.split(",");
r.add(new User(user[0], user[1]));
System.out.println(r.get(count).getName());
count++;
}
for (int i =0; i < r.size(); i++)
{
System.out.println(r.get(i).getName());
}
我设法验证这是我遇到问题的类,只有一个方法使用我注释掉的这个类中的数组列表。
答案 0 :(得分:7)
我将不得不穿上我的通灵调试护目镜,但我预测你的User
课程看起来像这样:
public class User {
private static String name;
public User(String x, String somethingElse) {
name = x;
}
public String getName() {
return name;
}
}
请注意name
是静态的。因此,这是一个变量 - 而不是User
的每个实例一个变量。您希望它是实例字段,以便每个User
对象具有不同的名称变量。