【问题标题】:Cannot figure out the output of my array list无法弄清楚我的数组列表的输出
【发布时间】:2013-04-17 15:49:52
【问题描述】:

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

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

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

【问题讨论】:

  • r 在哪里定义?你可以打印出它的 size() 来检查它的条目数是否正确
  • 代码有问题。请您发布完整代码。

标签: java loops arraylist


【解决方案1】:

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

public class User {
    private static String name;

    public User(String x, String somethingElse) {
        name = x;
    }

    public String getName() {
        return name;
    }
}

请注意,name 是静态的。因此,这是 一个 变量 - 不是每个 Userinstance 一个。您希望它是一个 instance 字段,以便每个 User 对象具有不同的名称变量。

【讨论】:

  • 谢谢。就是这样。我不敢相信我以前错过了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-28
  • 2011-09-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多