Pourquoi dois-je obtenir un double “variable locale” erreur?

J'ai une boucle dans laquelle je calculer une valeur et de l'ajouter à une liste. Donc, je fais quelque chose comme ça:

x = getValue()
values.add(x)
while (true) {
   x = getValue();
   values.add(x)
}

J'ai trouvé que cette approche ne fonctionne pas depuis que j'ai ajouter la même instance à la liste. Plus en détail, dans chaque cycle de la boucle, je ré-affecter une nouvelle valeur à la x et faisant donc j'ai changer les valeurs de tous les éléments qui ont déjà été ajoutées à la liste (donc à la fin je obtenir une liste d'éléments identiques).

Pour résoudre ce problème j'ai fait la suivante:

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)
}

De cette façon, j'ai voulu créer une nouvelle instance à chaque fois souhaitez ajouter une valeur à la liste. Mais il ne fonctionne pas puisque je obtenir un duplicata de variable locale d'erreur.

Il est aussi étrange pour moi que je n'ai pas cette erreur si je déclare la même variable plusieurs fois dans la boucle. Le problème n'apparait que si j'ai d'abord déclarer une nouvelle variable à l'extérieur de la boucle, et puis aussi dans la boucle.

Est-il un moyen en Java pour la ré-utiliser le même nom pour les différentes instances?

AJOUTÉ
J'ai besoin de clarifier certaines questions. Je n'ai pas de montrer tout le code. J'ai le break de commande dans la boucle (quand une nouvelle valeur ne peut pas être générer, je sortie de la boucle). x et value ont Integer[] type.

AJOUTÉ 2
Depuis qu'il a été mentionné que le problème peut être dans le getValue() j'ai besoin de plus de détails ici. En fait je n'ai pas getValue() dans mon code (j'ai utilisé getValue() ici pour faire mon exemple plus courte). Dans mon code j'ai eu:

   Integer[] x = new x[n];
    while (true) {
       for (int i=0; i<n; i++) {
          x[i] = y[i];
       }
       values.add(x)
    }

Et il ne fonctionne pas car dans mon values liste, j'ai eu des éléments identiques (et je sais que dans la boucle sur chaque cycle x avait une nouvelle valeur).

AJOUTÉ 3

Pourquoi tous les éléments de ma liste semble être le même?

  • Quel est le type de "x"? Comment venir ces boucles courir pour toujours? Qu'est-ce que le texte de l'erreur que vous décrivez comme "un double de la variable locale erreur"?
  • J'ai la commande break dans la boucle (quand une nouvelle valeur ne peut pas être générer, je sortie de la boucle). x et la valeur Integer[] type.
  • Cette question est extrêmement floue. Il ne semble être un vrai problème à résoudre, ni est-il réellement de code ou de messages d'erreur.
  • n'ont pas fourni le texte, ni aucun code qui présente un tel problème. @Bombe: exactement.
InformationsquelleAutor Roman | 2010-12-03