【发布时间】:2010-12-03 09:20:19
【问题描述】:
我有一个循环,我在其中计算一个值并将其添加到一个列表中。所以,我做了这样的事情:
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[] 类型。
添加了 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 个
【问题讨论】:
-
“x”的类型是什么?这些循环怎么会永远运行?您描述为“重复的局部变量错误”的错误的实际文本是什么?
-
@EJP,我在循环中有 break 命令(当无法生成新值时,我退出循环)。 x 和 value 具有 Integer[] 类型。
-
这个问题非常不清楚。似乎也没有真正需要解决的问题,也没有任何真正的代码或错误消息。
-
没有提供实际的文本,也没有提供任何表现出任何此类问题的代码。 @Bombe:完全正确。
标签: java duplicates local-variables