我有一个循环,我计算一个值并将其添加到列表中。所以,我做这样的事情:为什么我会收到“重复的本地变量”错误?
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中有没有一种方法可以为不同的实例重用相同的名称?
ADDED 我需要澄清一些问题。我没有显示所有的代码。我在循环中有break
命令(当一个新值不能生成时,我退出循环)。 x
和value
有Integer[]
类型。
加入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
Why all elements of my list seems to be the same?
'x'的类型是什么?这些循环是如何运行的?你描述为“重复的局部变量错误”的错误的*实际文本*是什么? – EJP 2010-12-03 09:27:03
@EJP,我在循环中有break命令(当一个新值不能生成时,我退出循环)。 x和值具有Integer []类型。 – Roman 2010-12-03 09:35:17