IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

Problème suppression élément d'une collection


Sujet :

Langage Java

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 307
    Points : 87
    Points
    87
    Par défaut Problème suppression élément d'une collection
    Bonjour à tous,

    J'ai réalisé une méthode pour supprimer un objet d'une collection dont on passera le numéro en paramètre.
    Lorsque je souhaite supprimer le dvd n°2 pas de soucis par contre lorsque je souhaite supprimer le dvd n°1, ma méthode affiche n° dvd non trouvé.

    D'où cela pourrait-il venir ?

    Voici le code de ma procédure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    	public void suppresionDVD (int noDVD){
    		int arret = 0;
    		int nbDVD = colDVD.size();
    		int i=0;
     
    		for(i=1;i<nbDVD;i++){
    			if (colDVD.elementAt(i).getNoMedia() == noDVD)
    			{
    				colDVD.removeElementAt(i);
    				arret = 1;
    			}
    		}
     
    		if(arret==1){
    			System.out.println("Le DVD n° "+noDVD+" a bien été supprimé !");
    		}
    		else
    		{
    			System.out.println("N°DVD non trouvé !");
    		}
    	}
    Merci d'avance pour votre aide

  2. #2
    Membre confirmé Avatar de Mobius
    Profil pro
    none
    Inscrit en
    Avril 2005
    Messages
    463
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : none

    Informations forums :
    Inscription : Avril 2005
    Messages : 463
    Points : 558
    Points
    558
    Par défaut
    Comment est valorisé ta collection ? Es tu certain qu'elle contient bien l'élément que tu cherche ?
    Tu peut rajouter des trace dans ta boucle pour afficher chaque élément et savoir quels sont ceux qui sont traité.

  3. #3
    Membre éclairé Avatar de Heimdal
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 549
    Points : 718
    Points
    718
    Par défaut
    Le premier élément d'un tableau ou d'une collection se trouve a l'index 0

  4. #4
    Membre confirmé Avatar de Mobius
    Profil pro
    none
    Inscrit en
    Avril 2005
    Messages
    463
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : none

    Informations forums :
    Inscription : Avril 2005
    Messages : 463
    Points : 558
    Points
    558
    Par défaut
    Citation Envoyé par Heimdal Voir le message
    Le premier élément d'un tableau ou d'une collection se trouve a l'index 0
    Bien vu

  5. #5
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par Heimdal Voir le message
    Le premier élément d'un tableau ou d'une collection se trouve a l'index 0
    +1

    Et au passage on privilégiera également l'utilisation d'ArrayList et de son interface List ainsi que de ses méthodes...

    a++

  6. #6
    Membre éclairé Avatar de Heimdal
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 549
    Points : 718
    Points
    718
    Par défaut
    Et au passage on privilégiera également l'utilisation d'ArrayList et de son interface List ainsi que de ses méthodes...
    C'est mieux mais je suis convaincu que pour ce genre d'indexage une Map serait tout à propos

  7. #7
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 307
    Points : 87
    Points
    87
    Par défaut
    Merci pour toutes vos réponses, en fait j'ai déjà essayé de mettre l'index à 0 mais j'ai eu cette erreur :
    Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1 >= 1
    at java.util.Vector.elementAt(Unknown Source)
    at biblio.Bibliotheque.suppresionDVD(Bibliotheque.java:57)
    at biblio.testBiblio.main(testBiblio.java:44)
    D'autre suggestions ?

  8. #8
    Membre éclairé Avatar de Heimdal
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 549
    Points : 718
    Points
    718
    Par défaut
    Mouais, j'ai des doutes...

    Fais voir ta classe entière

  9. #9
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 307
    Points : 87
    Points
    87
    Par défaut
    La collection se situe dans ma classe Bibliotheque que voici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    import java.util.Vector;
     
    package biblio;
     
    import java.util.Iterator;
    import java.util.Vector;
     
    public class Bibliotheque {
    	public Vector <Album> colAlbums;
    	public Vector <DVD> colDVD;
     
    	public Bibliotheque()
    	{
    		colAlbums = new Vector <Album> ();
    		colDVD = new Vector <DVD> ();
    	}
    }

  10. #10
    Membre éclairé Avatar de Heimdal
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 549
    Points : 718
    Points
    718
    Par défaut
    Classe entière parce que la je ne vois toujours pas pourquoi ca marcherait pas...

  11. #11
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 307
    Points : 87
    Points
    87
    Par défaut
    Voilà je t'ai tout mis

  12. #12
    Membre éclairé Avatar de Heimdal
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 549
    Points : 718
    Points
    718
    Par défaut
    J'ai vu... mais en l'état pas comprendre pourquoi cela... Des idées en l'air

    Pourquoi tes attributs sont publics? Sont-ils modifiés ailleurs dans ton programme? Plusieurs threads manipulent-ils ton objet?

  13. #13
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 307
    Points : 87
    Points
    87
    Par défaut
    Mes attributs sont public pour qu'ils soient accessibles dans l'ensemble du package, sinon ils sont utilisés dans une classe de test et pour le thread je ne pense pas

  14. #14
    Membre éclairé Avatar de Heimdal
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 549
    Points : 718
    Points
    718
    Par défaut
    J'ai testé la méthode chez moi et pas de problèmes. Peut-etre est-ce ta classe de test qui est foireuse

    Au passage:
    Mes attributs sont public pour qu'ils soient accessibles dans l'ensemble du package
    Il existe la visibilité package-protected pour cela. public signifie accessible de partout.
    Un attribut (ou une classe, ou une méthode) package-protected se déclare ainsi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    class Toto {
     
    int toto;
     
    void toto() {}
     
    }

  15. #15
    Membre éclairé Avatar de Heimdal
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 549
    Points : 718
    Points
    718
    Par défaut
    Peux-tu remettre tes méthodes add et affiche stp...

  16. #16
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 307
    Points : 87
    Points
    87
    Par défaut
    Ok ça marche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    	//permet d'ajouter un DVD à la bibliothèque
    	public void ajoutDVD(DVD D){
    		colDVD.addElement(D);
    	}
     
    	//permet d'afficher l'ensemble des informations des DVD présents dans la bibliothèque
    	public void afficheDVD()
    	{
    		int nbDVD = colDVD.size();
    		int i = 0;
     
    		while ((i<nbDVD)){
    			System.out.println(colDVD.elementAt(i).getNoMedia());
    			System.out.println(colDVD.elementAt(i).getTitreMedia());
    			System.out.println(colDVD.elementAt(i).getAnneeMedia());
    			i++;
    		}
    	}
    Merci pour ton aide

  17. #17
    Membre éclairé Avatar de Heimdal
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 549
    Points : 718
    Points
    718
    Par défaut
    Bon déso, je dois être fatigué, je n'avais pas vu qu'on continuait à parcourir le vecteur une fois le dvd trouvé car on ne compare pas à la taille actuelle du vecteur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    for (i = 0; i < colDVD.size(); i++) {
    			if (colDVD.elementAt(i).getNoMedia() == noDVD) {
    				colDVD.removeElementAt(i);
    				arret = 1;
    			}
    		}

  18. #18
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 307
    Points : 87
    Points
    87
    Par défaut
    C'est bien ça, un grand merci à toi, je savais que c'était un détail.
    Hop résolu

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Problème suppression objet dans une collection
    Par ziggy76 dans le forum VB.NET
    Réponses: 2
    Dernier message: 11/03/2014, 23h16
  2. [XL-2010] Gérer les suppressions d'éléments dans une collection et une double boucle
    Par Rayanea dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 22/10/2013, 09h08
  3. Problème suppression Sockets d'une collection
    Par Francky44003 dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 02/03/2012, 22h30
  4. suppression d'un élément d'une collection
    Par rominous41 dans le forum VBA Access
    Réponses: 5
    Dernier message: 10/05/2011, 16h57
  5. [EMF] suppression du dernier élément d une collection
    Par *alexandre* dans le forum Eclipse Platform
    Réponses: 2
    Dernier message: 02/04/2008, 08h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo