Affichage d'un medecin d'une liste
dana2019
Messages postés
21
Date d'inscription
Statut
Membre
Dernière intervention
-
Utilisateur anonyme -
Utilisateur anonyme -
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"); } } }
A voir également:
- Affichage d'un medecin d'une liste
- Liste déroulante excel - Guide
- Liste déroulante en cascade - Guide
- Liste code ascii - Guide
- Affichage double ecran - Guide
- Site dangereux liste - Guide
2 réponses
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.
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.
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"); } } }
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
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