- Probleme au niveau de la condition
- Excel cellule couleur si condition texte - Guide
- Mise a niveau windows 10 - Accueil - Mise à jour
- Condition et excel - Guide
- Problème au niveau des périphériques pnp ✓ - Forum Logiciels
- 4 images 1 mot niveau 10 chaperon rouge ✓ - Forum Jeux vidéo
2 réponses
Modifié le 11 janv. 2023 à 05:57
Bonjour,
Tu lèves une exception car tu n'as pas vérifié le contenu de la saisie de l'utilisateur.
Donc quand l'utilisateur saisit une chaîne de caractères qui est un chiffre tu arrives à le convertir mais s'il y a un caractère ton programme plante car tu n'as pas anticipé ce scénario.
Tu peux utiliser la méthode TryParse pour vérifier que la saisie est bien un entier :
Console.WriteLine("fille(1), garçon (2)"); string saisie = Console.ReadLine(); bool conversion = int.TryParse(saisie, out int sexe); if (!conversion) { Console.WriteLine("erreur sexe !"); System.Environment.Exit(1); } if (sexe < 1 || sexe > 2) { Console.WriteLine("erreur sexe !"); System.Environment.Exit(1); } Console.WriteLine("on va creer votre carte");
12 janv. 2023 à 08:25
Bonjour
Barnabé n'a pas utilisé foreach, c'est moi.
foreach, prend chaque élément d'une collection tour à tour. Une string, en français "chaine de caractères" est avant tout une collection de caractères.
Donc l'idée de l'option 2 est de regarder chaque caractère (à supposer que tu puisses avoir des nombres à plusieurs chiffres) et de vérifier individuellement que c'est un chiffre.
11 janv. 2023 à 08:48
Bonjour
pour être rigoureusement exact, int.TryParse essaye de convertir une string en nombre entier.
Cette fonction retourne vrai si elle y est arrivée et rempli la variable en paramètre "out".
Dans le cas contraire, elle retourne faux et le paramètre "out" vaut 0.
Ce qui est bien pratique car en une ligne on voit si la conversion est possible et on obtient son résultat.
Mais dans le cadre de cet exercice, on aurait pu faire autrement.
Option 1 vérifier les caractères, puisqu'on attends seulement "1" ou "2", on peut faire
Option 1.1, on peut même se dire que Convert est une opération "lourde" (idem pour TryParse) et affecter directement la bonne valeur
On peut faire la même chose avec un switch à la place de if, else if, else
Option 2, tu vérifies que chaque caractère de la chaîne représente un chiffre.
Modifié le 12 janv. 2023 à 02:39
Bonjour
› Whismeril
Merci beaucoup pour toutes les solutions apportées à mon problème, je vais regarder avec attention les trois solutions apporter pour comprendre la logique que tu as utilisée pour écrire ce programme merci beaucoup.
Par compte, je n'ai pas compris l'option 2 pouvez vous me le reexpliquer ?
Merci infiniment , soyez béni !
12 janv. 2023 à 02:38
Bonjour,
› barnabe0057
Merci beaucoup pour votre aide, je vous avoue ne pas avoir encore appris le foreach, car je débute en programmation. Cela m'évoque la boucle for. Il faut que prenne le temps de relire vos lignes de code pour que je puisse comprendre la logique derrière.
Merci infiniment , soyez béni !