Téléchargement
illégal
Posez votre question Signaler

Programme java, erreur dans le code

Tartif - Dernière réponse le 17 févr. 2010 à 17:29
Bonjour tout le monde,
J'ai un problème avec mon programme java. Je veux afficher des nombres premiers. Je les calcule puis les mets dans un vector. Puis je parcours ce vector avec un iterator, et je rajoute dans le vector des nombres premiers. Mais à l'éxécution, j'ai cette erreur :
Exception in thread "main" java.util.ConcurrentModificationException
at java.util.AbstractList$Itr.checkForComodification(AbstractList.java:372)
at java.util.AbstractList$Itr.next(AbstractList.java:343)
je vous montre mon code :
private static void calculer (int limite) {
premiers.addElement(new Integer(2));
Iterator itPrem = premiers.iterator();
boolean bool;
for(int i = 3; i <= limite; i++) { // on commence à 3 car on sait que 2 est déjà un nombre premier !
bool = true;
while (itPrem.hasNext()){
int z = (Integer)itPrem.next();
if (i % z == 0){
bool = false;
}
}
if (bool == true) {
premiers.add(new Integer(i)); //ajout du nombre premier dans le vector
}
}
} // calculer
L'erreur se produit au moment où on ajoute dans le vector!
Pouvez-vous m'aider s'il vous plait.
Je dois utiliser un iterator obligatoirement.
Merci d'avance pour votre aide
Lire la suite 

Programme java, erreur dans le code »

7 réponses
Réponse
+0
moins plus
Evites de faire plusieurs posts, les posts sans réponse se repèrent très bien, c'est juste que personne n'est compétent et disponible dans ce domaine. Si tu veux te retrouver en haut de la liste, fais simplement un up
Ajouter un commentaire
Réponse
+0
moins plus
Salut,

je veux bien essayer de t'aider mais la il manque une partie du code et mets tout ca entre balises code car après une dûre journée sur eclipse ca pique les yeux là !

A plus tard

Toopa
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour,

Tu essaies de modifier un vector qui est déjà en cours de modification.
Renseigne-toi du côté de synchronized.
Ajouter un commentaire
Réponse
+0
moins plus
Désolé blocks,
Merci latoopa, voici tout mon code!
Je sais biboo que c'est ça l'erreur, j'ai fais un peu de recherche, mais je ne sais pas comemnt corriger!
/**
 * Premiers - Liste des nombre premiers avec un java.util.Vector
 *
 * - Les premiers déjà trouvés sont stockés dans un java.util.Vector
 * - Pour tester si k est premier, on essaie de le diviser par les premiers déjà trouvés
 *
 *
 */
 
 import java.util.*;
 
public class Premiers {

  private static java.util.Vector premiers;

  private static void calculer (int limite) {
    premiers.addElement(new Integer(2));
    Iterator itPrem = premiers.iterator();
    boolean bool;
    for(int i = 3; i <= limite; i++) { // on commence à 3 car on sait que 2 est déjà un nombre premier !
    	bool = true;
    	    	
    	while (itPrem.hasNext()){
    		int z = (Integer)itPrem.next();
    		if (i % z == 0){
    			bool = false;
    		}
    	}
    	    	    	
    	if (bool == true) {
    		premiers.add(new Integer(i)); //ajout du nombre premier dans le vector
    	}
    }
  } // calculer

  private static void afficher (int limite) {
    Iterator itPrem = premiers.iterator();
    int cpt = 0;
    while (itPrem.hasNext()) {// tant qu'il y a quelque chose dans le vector
    	System.out.print(itPrem.next() + " ");  // on affiche l'élément
    	cpt++;
    	if(cpt == 10) {// si le compteur est égal à 10
    		System.out.print("\n"); // on va à la ligne, car on doit mettre que 10 éléments par ligne
    		cpt = 0;
    	}
    }
    System.out.println ("\n" + "Il y a " + premiers.size() + " nombre(s) premier compris entre 0 et " + limite + ".");
  } // afficher

  public static void main (String[] args) {
    if (args.length != 1) { 
      System.out.println("La commande est: java Premiers limite");
    } else {
      premiers = new java.util.Vector();
      int limite = Integer.parseInt(args[0]);
      calculer(limite);
      afficher(limite);
    }
  } // main

} // Premiers
Ajouter un commentaire
Réponse
+0
moins plus
Désolé blocks,
Merci latoopa, voici tout mon code!
Je sais biboo que c'est ça l'erreur, j'ai fais un peu de recherche, mais je ne sais pas comemnt corriger!
/**
 * Premiers - Liste des nombre premiers avec un java.util.Vector
 *
 * - Les premiers déjà trouvés sont stockés dans un java.util.Vector
 * - Pour tester si k est premier, on essaie de le diviser par les premiers déjà trouvés
 *
 *
 */
 
 import java.util.*;
 
public class Premiers {

  private static java.util.Vector premiers;

  private static void calculer (int limite) {
    premiers.addElement(new Integer(2));
    Iterator itPrem = premiers.iterator();
    boolean bool;
    for(int i = 3; i <= limite; i++) { // on commence à 3 car on sait que 2 est déjà un nombre premier !
    	bool = true;
    	    	
    	while (itPrem.hasNext()){
    		int z = (Integer)itPrem.next();
    		if (i % z == 0){
    			bool = false;
    		}
    	}
    	    	    	
    	if (bool == true) {
    		premiers.add(new Integer(i)); //ajout du nombre premier dans le vector
    	}
    }
  } // calculer

  private static void afficher (int limite) {
    Iterator itPrem = premiers.iterator();
    int cpt = 0;
    while (itPrem.hasNext()) {// tant qu'il y a quelque chose dans le vector
    	System.out.print(itPrem.next() + " ");  // on affiche l'élément
    	cpt++;
    	if(cpt == 10) {// si le compteur est égal à 10
    		System.out.print("\n"); // on va à la ligne, car on doit mettre que 10 éléments par ligne
    		cpt = 0;
    	}
    }
    System.out.println ("\n" + "Il y a " + premiers.size() + " nombre(s) premier compris entre 0 et " + limite + ".");
  } // afficher

  public static void main (String[] args) {
    if (args.length != 1) { 
      System.out.println("La commande est: java Premiers limite");
    } else {
      premiers = new java.util.Vector();
      int limite = Integer.parseInt(args[0]);
      calculer(limite);
      afficher(limite);
    }
  } // main

} // Premiers
Ajouter un commentaire
Réponse
+0
moins plus
Désolé blocks,
Merci latoopa, voici tout mon code!
Je sais biboo que c'est ça l'erreur, j'ai fais un peu de recherche, mais je ne sais pas comemnt corriger!
/**
 * Premiers - Liste des nombre premiers avec un java.util.Vector
 *
 * - Les premiers déjà trouvés sont stockés dans un java.util.Vector
 * - Pour tester si k est premier, on essaie de le diviser par les premiers déjà trouvés
 *
 *
 */
 
 import java.util.*;
 
public class Premiers {

  private static java.util.Vector premiers;

  private static void calculer (int limite) {
    premiers.addElement(new Integer(2));
    Iterator itPrem = premiers.iterator();
    boolean bool;
    for(int i = 3; i <= limite; i++) { // on commence à 3 car on sait que 2 est déjà un nombre premier !
    	bool = true;
    	    	
    	while (itPrem.hasNext()){
    		int z = (Integer)itPrem.next();
    		if (i % z == 0){
    			bool = false;
    		}
    	}
    	    	    	
    	if (bool == true) {
    		premiers.add(new Integer(i)); //ajout du nombre premier dans le vector
    	}
    }
  } // calculer

  private static void afficher (int limite) {
    Iterator itPrem = premiers.iterator();
    int cpt = 0;
    while (itPrem.hasNext()) {// tant qu'il y a quelque chose dans le vector
    	System.out.print(itPrem.next() + " ");  // on affiche l'élément
    	cpt++;
    	if(cpt == 10) {// si le compteur est égal à 10
    		System.out.print("\n"); // on va à la ligne, car on doit mettre que 10 éléments par ligne
    		cpt = 0;
    	}
    }
    System.out.println ("\n" + "Il y a " + premiers.size() + " nombre(s) premier compris entre 0 et " + limite + ".");
  } // afficher

  public static void main (String[] args) {
    if (args.length != 1) { 
      System.out.println("La commande est: java Premiers limite");
    } else {
      premiers = new java.util.Vector();
      int limite = Integer.parseInt(args[0]);
      calculer(limite);
      afficher(limite);
    }
  } // main

} // Premiers
Ajouter un commentaire
Réponse
+0
moins plus
Désolé d'avoir posté 3 fois le message, j'ai eu un soucis d'actualisation !
Ajouter un commentaire
Ce document intitulé « Programme java, erreur dans le code » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?