[JAVA] Probleme ajout element dans ArrayList
Résolu/Fermé
A voir également:
- [JAVA] Probleme ajout element dans ArrayList
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel football - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
- Waptrick jeux java itel ✓ - Forum Logiciels
- Java bible - Forum Téléchargement
2 réponses
Salut,
C'est normal : tu inclues trois fois le même tableau dans ton arrayList (l'ajout d'un tableau dans un arraylist ne copie pas ledit tableau...)
C'est normal : tu inclues trois fois le même tableau dans ton arrayList (l'ajout d'un tableau dans un arraylist ne copie pas ledit tableau...)
Salut,
N'oublie pas qu'en Java, un tableau est un objet et que donc une variable tableau désigne une référence à cet objet.
Je suppose que dans ton programme principal, tu créées un tableau, en modifie les cases, l'ajoute à ton ArrayList, remodifies ton tableau initial, le re-ajoute, etc...
C'est là que ça ne va pas : c'est le même tableau que désigne ta variable et la première case de ton arrayList.
Il faut donc qut tu crées un nouveau tableau à chaque fois que tu veux ajouter quelque chose à ton arrayList.
N'oublie pas qu'en Java, un tableau est un objet et que donc une variable tableau désigne une référence à cet objet.
Je suppose que dans ton programme principal, tu créées un tableau, en modifie les cases, l'ajoute à ton ArrayList, remodifies ton tableau initial, le re-ajoute, etc...
C'est là que ça ne va pas : c'est le même tableau que désigne ta variable et la première case de ton arrayList.
Il faut donc qut tu crées un nouveau tableau à chaque fois que tu veux ajouter quelque chose à ton arrayList.
Bonjour à tous,
Voilà, j'ai le même type de problème et je ne comprends pas trop pourquoi.
En fait, je programme l'algo A* en java et j'ai une méthode pour trouver les cases (noeud) suivantes dans mon terrain. Voici le code:
//Méthode de calcul des noeuds successeurs
public static void findSuccessors(Node n, String[][] tab){
int x=n.getX();
int y=n.getY();
int u=(x+1);
int r=y;
if (!GetTerrain.tab[u][r].equals(one)){
Node a=new Node(u,r);
//System.out.println(a);
successors.add(a);
System.out.println(successors);
}
int v=x;
int w=(y-1);
if (!GetTerrain.tab[v][w].equals(one)){
Node b=new Node(v,w);
//System.out.println(b);
successors.add(b);
System.out.println(successors);
}
int z=(x-1);
int t=y;
if (!GetTerrain.tab[z][t].equals(one)){
Node c=new Node(z,t);
successors.add(c);
System.out.println(successors);
}
int e=x;
int c=(y+1);
if (!GetTerrain.tab[e][c].equals(one)){
Node d=new Node(e,c);
successors.add(d);
System.out.println(successors);
}
Le problème est que lorsqu'il ajoute le nouveau noeud successeur, il écrase les suivants.
Un exemple sera plus parlant: je pars du noeud qui a pour coordonnées (4,3)
premier successeur (5,3) --> ma liste "successors" contient [(5,3)]
deuxième successeurs (3,3) --> ma liste "successors" contient desormais [(4,3);(4,3)]
troisième successeurs (4,2) --> ma liste "successors" contient desormais [(4,2);(4,2);(4,2)]
qutrième successeurs (4,4) --> ma liste "successors" contient desormais [(4,4);(4,4);(4,4);(4,4)]
Ce problème a pour conséquence que mon algo boucle a l'infini sauf si par hasard le derner noeud trouvé est le noeud à atteindre.
Je précise aussi que c'est mon premier code en java... Si vous avez besoin de plus de précision n'hésitez pas.
Merci pour votre aide.
Voilà, j'ai le même type de problème et je ne comprends pas trop pourquoi.
En fait, je programme l'algo A* en java et j'ai une méthode pour trouver les cases (noeud) suivantes dans mon terrain. Voici le code:
//Méthode de calcul des noeuds successeurs
public static void findSuccessors(Node n, String[][] tab){
int x=n.getX();
int y=n.getY();
int u=(x+1);
int r=y;
if (!GetTerrain.tab[u][r].equals(one)){
Node a=new Node(u,r);
//System.out.println(a);
successors.add(a);
System.out.println(successors);
}
int v=x;
int w=(y-1);
if (!GetTerrain.tab[v][w].equals(one)){
Node b=new Node(v,w);
//System.out.println(b);
successors.add(b);
System.out.println(successors);
}
int z=(x-1);
int t=y;
if (!GetTerrain.tab[z][t].equals(one)){
Node c=new Node(z,t);
successors.add(c);
System.out.println(successors);
}
int e=x;
int c=(y+1);
if (!GetTerrain.tab[e][c].equals(one)){
Node d=new Node(e,c);
successors.add(d);
System.out.println(successors);
}
Le problème est que lorsqu'il ajoute le nouveau noeud successeur, il écrase les suivants.
Un exemple sera plus parlant: je pars du noeud qui a pour coordonnées (4,3)
premier successeur (5,3) --> ma liste "successors" contient [(5,3)]
deuxième successeurs (3,3) --> ma liste "successors" contient desormais [(4,3);(4,3)]
troisième successeurs (4,2) --> ma liste "successors" contient desormais [(4,2);(4,2);(4,2)]
qutrième successeurs (4,4) --> ma liste "successors" contient desormais [(4,4);(4,4);(4,4);(4,4)]
Ce problème a pour conséquence que mon algo boucle a l'infini sauf si par hasard le derner noeud trouvé est le noeud à atteindre.
Je précise aussi que c'est mon premier code en java... Si vous avez besoin de plus de précision n'hésitez pas.
Merci pour votre aide.
17 mars 2009 à 18:23
Mais je pige pas tout, comment ça j'ajoute 3 fois le même tableau? puisque à chaque fois d est différent...
Sinon comment faire alors pour pouvoir ajouter à la suite de la arrayList un nouvel élément?
Merci d'avance.
19 avril 2011 à 20:58
MaArrayList.add(MonElement.clone);
25 mai 2016 à 23:17
13 juin 2012 à 14:18