Controle

[Résolu]
Signaler
Messages postés
125
Date d'inscription
mercredi 15 novembre 2000
Statut
Membre
Dernière intervention
2 mars 2006
-
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
-
Bonjour,
je suis en ce moment en train de développer un projet en mode console pour mon diplome mais j'ai un peu de mal à faire quelque chose, je m'explique :

j'ai crée un menu ou l'utilisateur doit saisir son choix, il saisit une variable de type chaine et je convertis cette variable en entier et ensuite je fais mon controle sur le choix (voici le code)

menu();
a = Console.ReadLine();
b = int.Parse(a);
//controle de saisie pour le menu
while (b!=1 && b!=2 && b!=3 && b!=4 && b!=5 )
{
Console.WriteLine("Erreur de saisie, veuillez ressaisir");
a = Console.ReadLine();
b = int.Parse(a);
}

mon problème est le suivant, lorsque je tape dans le choix des lettres, il me fait une erreur, je devrais faire un controle pour vérifier si ce que l'utilisateur tape est un entier mais je ne sais pas comment m'y prendre....

merci d'avance
K.bitnik

5 réponses

Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
37
bah...
la solutions la plus simple :

menu();
a = Console.ReadLine();
Regex regex = new Regex("[1-5]");
while (!regex.IsMatch(a)) {
Console.WriteLine("Erreur de saisie, veuillez ressaisir");
a = Console.ReadLine();
}

sachant que Regex se trouve dans System.Text.RegularExpressions

Sébastien FERRAND
Messages postés
125
Date d'inscription
mercredi 15 novembre 2000
Statut
Membre
Dernière intervention
2 mars 2006

ta méthode me semble un peu compliqué mais je pense avoir trouvé une autre solution, tiens si sa peut te servir :

while (b<1 || b>5)
{
menu();
try
{
b = int.Parse(Console.ReadLine());
if (b<1 || b>5)
{
Console.WriteLine("erreur de saisie, ressaisir");
}
}
catch
{
Console.WriteLine("Erreur de saisie, veuillez ressaisir\n");
}

jte remercie pour ton aide

Kbitnik
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
37
compliquée ??? tu trouves ma solution compliquée

c'est pourtant, la plus simple et la plus rapide... je n'essaye pas de transformer une chaine de caractères en int, je ne fais qu'un test... et comme tu le voulais tant que tu ne saisis pas un chiffre entre 1 et 5, ca marche pas...

dit-moi ou c'est compliqué ?

Sébastien FERRAND
Messages postés
125
Date d'inscription
mercredi 15 novembre 2000
Statut
Membre
Dernière intervention
2 mars 2006

ah ok en faite c'est parce que je ne comprenais pas ce que voulais dire regex. c'est juste un mot clé pour le test en faite ??
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
37
regex... pour Expressions Régulières... la manière la plus simple et la plus solide de controler la saisie des utilisateurs

Sébastien FERRAND