lilyy59
Messages postés22Date d'inscriptionlundi 1 novembre 2010StatutMembreDernière intervention19 mars 2012
-
18 nov. 2011 à 15:59
lilyy59
Messages postés22Date d'inscriptionlundi 1 novembre 2010StatutMembreDernière intervention19 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)
cs_GodConan
Messages postés2113Date d'inscriptionsamedi 8 novembre 2003StatutContributeurDernière intervention 6 octobre 201212 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");
}