无法弄清楚我的数组列表的输出

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)

我设法验证这是我遇到问题的类,只有一个方法使用我注释掉的这个类中的数组列表.

Jon*_*eet 7

我将不得不戴上我的通灵调试护目镜,但我预测你的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对象具有不同的名称变量.