我最近遇到了向数组添加值的问题 该数组仅包含多个最后添加的值 我正在寻找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
答案 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)
这种行为是因为你的嵌套循环,没有别的。考虑删除嵌套循环,并在迭代时打印。