0

これはばかげた質問かもしれませんが、イライラします。ループ中にオブジェクトを配列リストに追加していますが、ループの外では、すべての配列リストが配列の最後の要素で上書きされます。こんな感じです。

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つだけであることを確認できました。

4

1 に答える 1

7

私はサイキック デバッグ ゴーグルを着用する必要がありますが、あなたのUserクラスは次のようになると予測しています。

public class User {
    private static String name;

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

    public String getName() {
        return name;
    }
}

name静的であることに注意してください。したがって、これは1 つの変数です。 のインスタンスごとに 1 つではありませUser。各オブジェクトが異なる名前変数を持つように、インスタンスフィールドにする必要があります。User

于 2013-04-17T15:53:15.360 に答える