Empêcher la saisie de lettres [Résolu]

Messages postés
9
Date d'inscription
jeudi 22 janvier 2004
Dernière intervention
28 novembre 2005
- 28 nov. 2005 à 17:01 - Dernière réponse :
Messages postés
9
Date d'inscription
jeudi 22 janvier 2004
Dernière intervention
28 novembre 2005
- 28 nov. 2005 à 21:29
Dans le morceau de code suivant, je voudrais savoir comment empêcher que l'utilisateur saisisse une lettre ou n'appuie sur Entrée car cela génère une erreur sur la console de sortie, quant le programme est en cours d'éxécution, et je voudrais contrôler cette erreur de saisie. Des idées ???

int nMyChoice
;


while(true)


{


Console
.WriteLine("Choisissez le numéro correspondant à l'opération que vous souhaitez faire : ");


string sMyChoice
= Console
. ReadLine ();
// Convertit ce qui a été saisi en un entier
nMyChoice
= Convert
.ToInt32(sMyChoice
);


if (nMyChoice
< 5 && nMyChoice
> 0)


{
break;
}


Console
.WriteLine("Vous devez saisir un nombre compris entre 1 et 4, Veuillez recommencer.");
Console
.WriteLine();


}
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
Messages postés
103
Date d'inscription
mardi 9 novembre 2004
Dernière intervention
10 septembre 2007
28 nov. 2005 à 19:38
1
Merci
Hello,



int nMyChoice
;
while(true)



{



Console
.WriteLine("Choisissez le numéro correspondant à l'opération que vous souhaitez faire : ");





string sMyChoice
= Console
. ReadLine ();
// Convertit ce qui a été saisi en un entier

if (sMyChoice ! = String.Empty)

{
try (nMyChoice
= Convert
.ToInt32(sMyChoice
))
{

if (nMyChoice
< 5 && nMyChoice
> 0)

{
break;
}
}

catch (SystemException)

{

Console
.WriteLine("Vous devez saisir un nombre compris entre 1 et 4, Veuillez recommencer.");
Console
.WriteLine();

}

}

Merci cispo 1

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de cispo
Messages postés
9
Date d'inscription
jeudi 22 janvier 2004
Dernière intervention
28 novembre 2005
28 nov. 2005 à 21:29
0
Merci
J'y avis pensé moi aussi, mais j'ai des problèmes de parenthèses ouvrantes/fermantes, et ça m'énerve. Si toi ou quelqu'un d'autre pouvait me corriger directement mon programme en entier avec la réponse puis l'essayer ça serait bien. Je triche pas, je cherche juste à comprendre la syntaxe de cette correction. Merci à tous.

Voici mon code en entier cette fois :


using System
;


namespace Operators


{


public class Class1



{


public static void Main(string[] args
)


{


Console
.WriteLine("Type d'opération à effectuer :");


Console
.WriteLine(); // Saut de ligne


Console
.WriteLine("1-Addition-Multiplication-Division-Soustraction");


string sFirstNbr
; string sSecondNbr
;


decimal mFirstNbr
; decimal mSecondNbr
;


decimal mResult
; int nMyChoice
;


// Tant que l'opération choisie est comprise entre 1 et 4, alors on sort de la boucle,


// sinon on retourne au début de la boucle


while(true) // Début de la boucle


{


Console
.WriteLine("Choisissez le numéro correspondant à l'opération que vous souhaitez faire : ");


string sMyChoice
= Console
. ReadLine ();


// Convertit ce qui a été saisi en un entier


nMyChoice
= Convert
.ToInt32(sMyChoice
);


if (nMyChoice
< 5 && nMyChoice
> 0)


{


break;


}


Console
.WriteLine("Vous devez saisir un nombre compris entre 1 et 4, Veuillez recommencer.");


Console
.WriteLine();


} // Fin de la boucle


Console
.Write("Entrez le premier nombre : ");


sFirstNbr
= Console
. ReadLine ();


mFirstNbr
= Convert
.ToDecimal(sFirstNbr
);


Console
.Write("Entrez le deuxième nombre : ");


sSecondNbr
= Console
. ReadLine ();


mSecondNbr
= Convert
.ToDecimal(sSecondNbr
);


switch(nMyChoice
)


{


case 1:


mResult
= mFirstNbr
+ mSecondNbr
;


Console
. WriteLine (); // Saute une ligne


Console
.WriteLine(mFirstNbr
+ " plus " + mSecondNbr
+ " est égal à " + mResult
);


break;


case 2:


mResult
= mFirstNbr
* mSecondNbr
;


Console
.WriteLine(); // Saute une ligne


Console
.WriteLine(mFirstNbr
+ " multiplié par " + mSecondNbr
+ " est égal à " + mResult
);


break;


case 3:



if(mSecondNbr
!= 0)


{


mResult
= mFirstNbr
/ mSecondNbr
;


Console
. WriteLine (); // Saute une ligne


Console
.WriteLine(mFirstNbr
+ " divisé par " + mSecondNbr
+ " est égal à " + mResult
);


}


else


{


Console
.WriteLine(); // Saute une ligne


Console
.WriteLine("Division par zéro impossible");


}


break;


case 4:


mResult
= mFirstNbr
- mSecondNbr
;


Console
.WriteLine(); // Saute une ligne


Console
.WriteLine(mFirstNbr
+ " moins " + mSecondNbr
+ " est égal à " + mResult
);


break;


}


}


}


}
Commenter la réponse de cs_v1

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.