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

Windows Forms Discussion :

Compter le nombre d'occurence d'un objet dans un arraylist


Sujet :

Windows Forms

  1. #1
    Membre régulier Avatar de florianjoy54
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 155
    Points : 91
    Points
    91
    Par défaut Compter le nombre d'occurence d'un objet dans un arraylist
    Bonjour,

    voila j'ai un arraylist composé d'animaux : plus précicément
    felin, rapace, aquatique

    j'aimerais compter le nombre d'occurences d'un de ces objets.

    pour cela j'ai utiliser la méthode contains. pourriez vous regardez mon bout de code svp

    merci

    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
     
    private void buttonRechercher_Click(object sender, EventArgs e)
            {
                string t;
                t = comboBox1.Text;
                MessageBox.Show(t);
                int compteur = 0;
                for (int i = 0; i < zoo.unArrayList().Count; i++)
                {
     
                    if (i.Contains(t))
                    {                 
                        compteur++;
     
                    }
     
     
                }
     
                MessageBox.Show(compteur.ToString());
            }

  2. #2
    Membre éclairé Avatar de nsanabi
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    570
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Septembre 2003
    Messages : 570
    Points : 678
    Points
    678
    Par défaut
    Citation Envoyé par florianjoy54 Voir le message
    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
    string t;
                t = comboBox1.Text;
                MessageBox.Show(t);
                int compteur = 0;
                for (int i = 0; i < zoo.unArrayList().Count; i++)
                {
     
                    if (i.Contains(t))
                    {                 
                        compteur++;
     
                    }
     
     
                }
    i est un int, donc il n'a pas de méthode contains
    si ton arraylist contient des objets (metier), il faut comparer avec un objet et non une chaine de caractère (t est string)

    tu peut faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    foreach(animal a in zoo.unArrayList())
          if(a.comparer(t))
               c++;
    animal et la super classe de tes classes

    comparer est une méthode que tu devra définir sur ta classe mère (Animal) et peut être dans chacune de tes sous classes et qui te permet de comparer deux objets animal, ou un champs (le nom ou l'espèce de l'animal par exemple) avec une valeur (ici t) et qui retourne le résultat de la comparaison en booléen

    si tu n'a rien compris donner la structure de ta classe zoo et des autres classes

  3. #3
    Membre régulier Avatar de florianjoy54
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 155
    Points : 91
    Points
    91
    Par défaut
    pas sur d'avoir compris la deuxième partie.
    je crée une méthode comparer en faite. dans la classe mère (Animal) et dans les classes filles (Felin, Rapace, Aquatique) ?
    zoo:
    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
    22
    23
    24
    25
    26
     
        class Zoo
        {
            private ArrayList ArrayListAnimZoo = new ArrayList();
            // Liste des animaux 
            Animaux panthere = new Felin("Rose", "Felin", 18, 203, 50, "Féminin", 90);
            Animaux lions = new Felin("Simba", "Felin", 13, 200, 90, "Masculin", 80);
            Animaux requin = new Aquatique("Titi", "Aquatique", 5, 200, 1200, "Masculin", 7.6F, 90, 53);
            Animaux aigle = new Rapace("Tata", "Rapace", 6, 190, 3, "Féminin", 5, 190, 7);
     
            public ArrayList unArrayList()
            {
                return ArrayListAnimZoo;
            }
     
            // Ajouter les animaux à l'arraylist
            public void enregistrerAnim()
            {
                ArrayListAnimZoo.Add(panthere);
                ArrayListAnimZoo.Add(lions);
                ArrayListAnimZoo.Add(requin);
                ArrayListAnimZoo.Add(aigle);
            }
     
        }
    }

    Animal :

    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
    22
    23
     
     public class Animaux
        {
            protected string nom;
            protected string type;
     
            public Animaux(string nom, string type)
            {
                this.nom = nom;
                this.type = type;
     
            }
     
     
            public virtual string getType()
            {
                return type;
            }
     
            public virtual void setType(string type)
            {
                this.type = type;
            }

    Felin :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
            public override string getType()
            {
                return type;
            }
     
            public override void setType(string type)
            {
                this.type = type;
            }

  4. #4
    Membre éclairé Avatar de nsanabi
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    570
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Septembre 2003
    Messages : 570
    Points : 678
    Points
    678
    Par défaut
    la méthode unArrayList() doit être static pour qu'il te soit possible de l'appeler directement depuis ta classe Zoo, (sinon il faudra créer un objet de type Zoo pour l'appeler)


    si j'ai bien compris tu veut chercher le nombre d'objets de type t dans la liste ?! (pour simplifier tu peut ne pas utiliser la méthode comparer que j'ai proposé)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    string t="Felin";
    ArrayList liste=Zoo.unArrayList();
    c=0;
    foreach(Animaux a in liste)
          if (a.getType()==t)
              c++;
    bon codage

  5. #5
    Membre émérite
    Avatar de laedit
    Homme Profil pro
    Consultant études et développement
    Inscrit en
    Décembre 2006
    Messages
    1 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant études et développement
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 344
    Points : 2 265
    Points
    2 265
    Par défaut
    Je te conseillerais de lire ce cours http://tahe.developpez.com/dotnet/csharp/ afin de pouvoir reprendre la structure de ton projet.

    En effet, certaines méthodes (getType, SetType) peuvent être remplacées par des propriétés pour une meilleure compréhension.

    Ensuite, je ne comprends pas pourquoi tu dois indiquer toi même le type d'un objet ("felin", "Rapace") quand tu instancie un objet de ces type. Il te suffirait de le mettre dans le constructeur de ces classes.

    Un dernier conseil, n'hésite pas à mettre des commentaires dans ton code, ça t'évitera de t'y pencher dessus pendant 2h pour savoir ce qu'il fait quand tu le reprendra plus tard.

    Sinon, pour ton problème, je pense que ce qu'à dit nsanabi devrait te convenir

  6. #6
    Membre régulier Avatar de florianjoy54
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 155
    Points : 91
    Points
    91
    Par défaut
    Ok merci pour les conseils ça fonctionne

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

Discussions similaires

  1. compter le nombre d'occurences d'un mot dans une chaine
    Par huître dans le forum VBA Access
    Réponses: 8
    Dernier message: 15/10/2014, 15h19
  2. Compter le nombre d'occurences d'une chaine dans un texte
    Par tim91700 dans le forum Débuter
    Réponses: 5
    Dernier message: 02/04/2011, 16h27
  3. Compter le nombre d'occurences d'un mot dans une table
    Par Scots dans le forum Requêtes
    Réponses: 0
    Dernier message: 11/03/2011, 09h36
  4. Compter le nombre d'occurences d'un mot dans un texte
    Par AlexandraS dans le forum Langage
    Réponses: 13
    Dernier message: 26/03/2008, 09h12
  5. Réponses: 8
    Dernier message: 18/01/2005, 10h58

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