Erreur dans l'execution de ma boucle [Résolu]

Messages postés
22
Date d'inscription
lundi 1 novembre 2010
Statut
Membre
Dernière intervention
19 mars 2012
- - Dernière réponse : lilyy59
Messages postés
22
Date d'inscription
lundi 1 novembre 2010
Statut
Membre
Dernière intervention
19 mars 2012
- 18 nov. 2011 à 18:42
Bonjour

Voici le code que je teste :
public void ajoutPiece(Piece pi, String repere){
if(lesPieces.size()!=0){
for(Piece p : lesPieces){
if(repere.equals(p.getRepere())){
System.out.println("Il y a deja une piece avec ce repere");
}else{
this.lesPieces.add(pi);	
System.out.println("piece ajoutée");
}
}
}else{
this.lesPieces.add(pi);	
System.out.println("piece ajoutée");
}
}


Mon soucis est que quand j'ai pas de pieces, donc ma 1ere condition non verifiée, ma piece s'ajoute. Mais dès qu'il faut rentrer dans mon for, il me marque bien piece ajoutée, mais derriere j'ai des erreurs :
Exception in thread "main" java.util.ConcurrentModificationException
at java.util.LinkedList$ListItr.checkForComodification(Unknown Source)
at java.util.LinkedList$ListItr.next(Unknown Source)
at Boite.ajoutPiece(Boite.java:12)
at Main.main(Main.java:68)


Merci
Afficher la suite 

2 réponses

Meilleure réponse
Messages postés
2116
Date d'inscription
samedi 8 novembre 2003
Statut
Contributeur
Dernière intervention
6 octobre 2012
9
3
Merci
salut ;o)

C est un peu tordu ton test dans ta boucle ... ;o)
tu scannes une collection que tu fais grandir durant ce scanne.. ;o) de plus à se rytme tu n en veras jamais la fin ...
for(Piece p : lesPieces){
if(repere.equals(p.getRepere())){
System.out.println("Il y a deja une piece avec ce repere");
}else{
this.lesPieces.add(pi);	
System.out.println("piece ajoutée");
// combien de fois cette condition va t elle etre remplie.???!!! ;o) 
// es ce vraiment ce que tu veux?? 
}
}


je pense que tu veux plutot faire ca :

boolean finded = false;
for(Piece p : lesPieces){
if(repere.equals(p.getRepere())){
System.out.println("Il y a deja une piece avec ce repere");
finded = true;
break;
}}
if ( !finded ){
this.lesPieces.add(pi);	
System.out.println("piece ajoutée");
}





GodConan ;o)

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 199 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_GodConan
Messages postés
22
Date d'inscription
lundi 1 novembre 2010
Statut
Membre
Dernière intervention
19 mars 2012
0
Merci
Oui, c'est vrai que je n'y avais pas pensé.

Merci beaucoup
Commenter la réponse de lilyy59