Empêcher la saisie de lettres

Résolu
cs_v1 Messages postés 9 Date d'inscription jeudi 22 janvier 2004 Statut Membre Dernière intervention 28 novembre 2005 - 28 nov. 2005 à 17:01
cs_v1 Messages postés 9 Date d'inscription jeudi 22 janvier 2004 Statut Membre 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();


}

2 réponses

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

}

}
1
cs_v1 Messages postés 9 Date d'inscription jeudi 22 janvier 2004 Statut Membre Dernière intervention 28 novembre 2005
28 nov. 2005 à 21:29
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;


}


}


}


}
0
Rejoignez-nous