Erreur dans l'execution de ma boucle

Résolu
lilyy59 Messages postés 22 Date d'inscription lundi 1 novembre 2010 Statut Membre Dernière intervention 19 mars 2012 - 18 nov. 2011 à 15:59
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

2 réponses

cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
18 nov. 2011 à 18:29
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)
3
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
Oui, c'est vrai que je n'y avais pas pensé.

Merci beaucoup
0
Rejoignez-nous