数组包含多个最后一个值

时间:2017-06-11 10:35:35

标签: java arrays reference

我最近遇到了向数组添加值的问题 该数组仅包含多个最后添加的值 我正在寻找Stack Overflow,但所有答案都表示使用静态字段或者存在相同的对象。但这些都不是我的理由。

这是我的代码:

主要课程:

public class Main {

    public static void main(String[] args) {
        Foo[] FooColection = new Foo[5];
        for (int i = 0; i < 5; i++) {
            Foo Bar = new Foo(i);//making a new Object everytime
            FooColection[i] = Bar;
            for (int j = 0; j < i;j++ ) {
                System.out.println(FooColection[i].getValue());
            }
        }
    }
}

Foo类:

public class Foo {

    private int value;//non-static field

    public Foo(int value) {
        this.value = value;
    }

    public void change(int newVal) {
        this.value = newVal;
    }

    public int getValue() {
        return value;
    }
}

输出:

1
2
2
3
3
3
4
4
4
4

3 个答案:

答案 0 :(得分:2)

您正在多次打印对象。它在j循环中,您正在打印i

System.out.println(FooColection[i].getValue());

您应该删除j循环,因为Foo不是一个集合,它只是一个对象。

答案 1 :(得分:1)

你的阵列没什么问题。只需删除j循环就可以了。

public class Main {

    public static void main(String[] args) {
        Foo[] FooColection = new Foo[5];
        for (int i = 0; i < 5; i++) {
            Foo Bar = new Foo(i);//making a new Object everytime
            FooColection[i] = Bar;
            System.out.println(FooColection[i].getValue());
            }
        }
    }
}

输出

1
2
3
4

答案 2 :(得分:1)

这种行为是因为你的嵌套循环,没有别的。考虑删除嵌套循环,并在迭代时打印。