Soucis avec un switch

Signaler
Messages postés
8
Date d'inscription
mardi 9 mars 2004
Statut
Membre
Dernière intervention
29 juin 2004
-
Messages postés
8
Date d'inscription
mardi 9 mars 2004
Statut
Membre
Dernière intervention
29 juin 2004
-
Voila je viens de commencer le C#, et je viens de tombé sur un problème... :(
En effet je demande au user de rentré un nombre je fais mes cas et en fait je souhaiterais que le default pointe vers le debut du switch.

En fait ce serait équivalant à dire tant ke le chiffre tappés ne sont pas dans mes cas ressaisissez le.

Voici le code:

int nb,choix;
Console.WriteLine("\nCombien (1-4) ?\n");
choix=Console.Read();

switch (choix)
{
case '1' : Console.WriteLine ( "\nVous avez choisit 1 \n");
nb=choix;
...
break;

case '2' : Console.WriteLine ( "\nVous avez choisit 2.\n");
nb=choix;
...
break;

case '3' : Console.WriteLine ( "\nVous avez choisit 3 \n");
nb=choix;
...
break;

case '4' : Console.WriteLine ( "\nVous avez 4 \n");
nb=choix;
...
break;

default : Console.WriteLine( "\donnée incoherente, recommence\n");
Console.WriteLine("\nCombien (1-4) ?\n");
choix=Console.Read();
break;
}

Voila dans le style ce ke ca donne, et j'aimerais qu'il retourne apres le default au while au dessus.....

A votre bon coeur un peu d'aide... -_-

5 réponses

Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
85
comme la valeur est comprise dans un range, pourquoi ne pas plutot faire une verif sur la saisie ?

tant que choix n'est pas bon => redemander la saisie :
int nb,choix;
do
{
Console.WriteLine("\nCombien (1-4) ?\n");
choix=Console.Read();
}
while(choix<1 || choix >4);

switch (choix)
...


Cocoricoooooooo !!!!
Messages postés
8
Date d'inscription
mardi 9 mars 2004
Statut
Membre
Dernière intervention
29 juin 2004

Merci pour ta réponse, mais
Voila quand je fais ce ke tu me dis g un souci à l'éxécution, l'exe me demande tt le temps de resaisir mes demandes mem si comprises de 1 à 4...

Il ne s'arrete pas et en plus il me l'ecris 3 fois... Combien 1-4 ( apparait 3 fois a l'ecran entre chacune des saisies que j'effectue)

tu penses que ca vien de quoi?

J'espere que tu pourras m'aider sur cet épineux problème...

=)
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
85
G ptet merdouiller qq part ^^
V voir ça

Cocoricoooooooo !!!!
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
85
Console.Read() te retourne le code ASCII (en décimal) du caractère entré

1 : choix=49 etc etc (cf table ASCII pour les valeurs)
donc forcement tu t'arrete jamais

donc utilisons plutot ReadLine, qui retourne un string, que nous convertissons ensuite en int en gérant les erreurs si l'utilisateur saisi une lettre par exemple (ce que fais en général tout utilisateur juste pour voir si ça plante ^^)

int nb,choix=0;
string saisie_utilisateur;
do
{
Console.WriteLine("\nCombien (1-4) ?\n");

// lecture de la chaine entrée par l'utilisateur
saisie_utilisateur = Console.ReadLine();

// conversion en int
try
{
choix = int.Parse(saisie_utilisateur);
}
catch
{
// en cas d'erreur (exception levée par Parse, sans les distinguer)
Console.WriteLine("\nSaisie invalide !\n");
}
}
while(choix<1 || choix >4);


Cocoricoooooooo !!!!
Messages postés
8
Date d'inscription
mardi 9 mars 2004
Statut
Membre
Dernière intervention
29 juin 2004

Je te remercie, ca marche nickel!!!

Un grand cocoricooooooooooo!!! à toi ;)