Affichage d'un medecin d'une liste

Fermé
dana2019 Messages postés 21 Date d'inscription lundi 20 avril 2020 Statut Membre Dernière intervention 15 mai 2020 - 22 avril 2020 à 09:35
Whismeril Messages postés 19024 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 18 avril 2024 - 22 avril 2020 à 11:07
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

Whismeril Messages postés 19024 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 18 avril 2024 928
22 avril 2020 à 09:47
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.
0
dana2019 Messages postés 21 Date d'inscription lundi 20 avril 2020 Statut Membre Dernière intervention 15 mai 2020
22 avril 2020 à 10:37
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");
                }
                
            }
            
        }
0
Whismeril Messages postés 19024 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 18 avril 2024 928
22 avril 2020 à 11:07
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
0