我有一个循环,我在其中计算一个值并将其添加到一个列表中。所以,我做这样的事情:
x = getValue()
values.add(x)
while (true) {
x = getValue();
values.add(x)
}
我发现这种方法不起作用,因为我将相同的实例添加到列表中。更详细地说,在循环的每个循环中,我都会为 重新分配一个新值,x
这样做我会更改已添加到列表中的所有元素的值(所以最后我会得到一个相同元素的列表)。
为了解决这个问题,我做了以下事情:
x = getValue();
Integer[] valueToAdd = new Integer[n];
for (int i=0; i<n; i++) {
valueToAdd[i] = x[i];
}
while (true) {
x = getValue();
y = new Integer[n];
for (int i=0; i<n; i++) {
valueToAdd[i] = x[i];
}
values.add(valueToAdd)
}
通过这种方式,我想在每次想向列表中添加一个值时创建一个新实例。但它不起作用,因为我得到一个重复的局部变量错误。
我也很奇怪,如果我在循环中多次声明同一个变量,我没有这个错误。仅当我首先在循环外声明一个新变量然后在循环中声明时才会出现问题。
Java中有没有办法为不同的实例重用相同的名称?
添加
我需要澄清一些问题。我没有显示所有代码。我break
在循环中有命令(当无法生成新值时,我退出循环)。x
并value
有Integer[]
类型。
ADDED 2
既然有人提到问题可能出在getValue()
我需要在这里更详细的说明。实际上我getValue()
的代码中没有(我getValue()
在这里用来使我的示例更短)。在我的代码中,我有:
Integer[] x = new x[n];
while (true) {
for (int i=0; i<n; i++) {
x[i] = y[i];
}
values.add(x)
}
而且它不起作用,因为在我的values
列表中我有相同的元素(而且我知道在每个循环的循环中x
都有一个新值)。
添加 3