Soucis avec un switch

zigzou Messages postés 8 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 29 juin 2004 - 13 mars 2004 à 19:13
zigzou Messages postés 8 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 29 juin 2004 - 15 mars 2004 à 16:45
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

cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
14 mars 2004 à 00:23
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 !!!!
0
zigzou Messages postés 8 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 29 juin 2004
14 mars 2004 à 19:06
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...

=)
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
14 mars 2004 à 20:08
G ptet merdouiller qq part ^^
V voir ça

Cocoricoooooooo !!!!
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
14 mars 2004 à 20:25
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 !!!!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
zigzou Messages postés 8 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 29 juin 2004
15 mars 2004 à 16:45
Je te remercie, ca marche nickel!!!

Un grand cocoricooooooooooo!!! à toi ;)
0
Rejoignez-nous