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

cs_v1 9 Messages postés jeudi 22 janvier 2004Date d'inscription 28 novembre 2005 Dernière intervention - 28 nov. 2005 à 17:01 - Dernière réponse : cs_v1 9 Messages postés jeudi 22 janvier 2004Date d'inscription 28 novembre 2005 Dernière intervention
- 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 

2 réponses

Répondre au sujet
cispo 103 Messages postés mardi 9 novembre 2004Date d'inscription 10 septembre 2007 Dernière intervention - 28 nov. 2005 à 19:38
+3
Utile
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();

}

}
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cispo
cs_v1 9 Messages postés jeudi 22 janvier 2004Date d'inscription 28 novembre 2005 Dernière intervention - 28 nov. 2005 à 21:29
0
Utile
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.