有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java无法计算数组列表的输出

这可能是一个愚蠢的问题,但它让我感到沮丧。我在循环期间将一个对象添加到数组列表中,但在循环之外,所有数组列表都会被数组中的最后一个元素覆盖。事情是这样的

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());
}

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


共 (1) 个答案

  1. # 1 楼答案

    我将不得不戴上我的心理调试护目镜,但我预测你的User课程看起来是这样的:

    public class User {
        private static String name;
    
        public User(String x, String somethingElse) {
            name = x;
        }
    
        public String getName() {
            return name;
        }
    }
    

    注意name是静态的。因此,这是一个变量,而不是每个实例User。您希望它是一个实例字段,这样每个User对象都有一个不同的名称变量