use*_*078 0 java loops arraylist
这可能是一个愚蠢的问题,但令我感到沮丧.我在循环期间在循环外添加到我的数组列表中的对象,所有数组列表都被数组中的最后一个元素覆盖.它就是这样的.
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++;
}
Run Code Online (Sandbox Code Playgroud)
在循环期间,这给了我类似的输出(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());
}
Run Code Online (Sandbox Code Playgroud)
我设法验证这是我遇到问题的类,只有一个方法使用我注释掉的这个类中的数组列表.
我将不得不戴上我的通灵调试护目镜,但我预测你的User
班级看起来像这样:
public class User {
private static String name;
public User(String x, String somethingElse) {
name = x;
}
public String getName() {
return name;
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,这name
是静态的.因此这是一个变量-每而不是一个实例的User
.您希望它是一个实例字段,以便每个User
对象具有不同的名称变量.