値を計算してリストに追加するループがあります。だから、私はそのようなことをします:
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