Affichage d'un medecin d'une liste

Signaler
Messages postés
21
Date d'inscription
lundi 20 avril 2020
Statut
Membre
Dernière intervention
15 mai 2020
-
Messages postés
14478
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
12 juillet 2020
-
Bonjour j'ai une question j'essaie d'afficher un medecin de ma liste en lui demandant son code d'identification mais j'ai l'impression que cela ne marche pas pouvez vous m'aider
  public void afficherUnmedecin()
        {
            int code;
            Console.WriteLine("Code d'identification:");
            code = Convert.ToInt32(Console.ReadLine());

            foreach (Medecin medecin in _listeMedecin)
            {
                if (_listeMedecin.Contains(new Medecin(code)))
                {
                    Console.WriteLine(medecin.CodeIdentification + "\n");
                    Console.WriteLine(medecin.Nom);
                   


                }
                else
                {
                    throw new Exception("Le medecin n'Existe pas");
                }
            }
        }

2 réponses

Messages postés
14478
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
12 juillet 2020
554
La méthode Contains te dit si un objet existe déjà dans la liste.
Avec new quelque chose, il ne peut pas exister déjà puisqu’il est tout nouveau.

Il faut que tu itères tous les items de la liste et que tu regardes la valeur de la propriété code de chacun.

Si tu trouves, tu arrêtes la boucle et tu agis en conséquence, si tu ne trouves pas tu agis autrement.
Arrêter la boucle est important car s’il y a 10 000 items et que celui que tu cherches est le centième, cela t’évite 9 900 itérations inutiles.
Messages postés
21
Date d'inscription
lundi 20 avril 2020
Statut
Membre
Dernière intervention
15 mai 2020

J'ai fais un truc de même mais cela ne marche pas ma proprieté CodeIdentification se trouve dans ma classe medecin.cs
public void afficherUnmedecin()
        {
            int code;
            Console.WriteLine("Code d'identification:");
            code = Convert.ToInt32(Console.ReadLine());

            foreach (Medecin medecin in _listeMedecin)
            {
                if (medecin.CodeIdentification==code)
                {
                    Console.WriteLine("Code d'identification" + code + "\n");
                    Console.WriteLine("Nom " + medecin.Nom);
                }
                else
                {
                    throw new Exception("Le medecin n'existe pas");
                }
                
            }
            
        }
Messages postés
14478
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
12 juillet 2020
554
Supposons que le médecin que tu cherches ne soit pas le premier.
Le test sur le premier est donc false, ça va donc dans le else, donc ça génère une erreur.

Ce n’est pas ce que je t’ai proposé.

Avant de réagir au fait que le médecin soit absent de la liste (générer une erreur dans ton cas), il faut avoir testé toute la liste.

Par exemple avant la boucle, initialiser un bool à false.
Si tu trouves, te le mets true et tu sors de la boucle (instruction break). Si tu ne trouves pas tu ne fais rien.
Après la boucle, tu vérifies la valeur de ce bool, false pas d’occurence, true occurrence