Vérifier si la saisie de l'utilisateur est un nombre
Je veux vérifier si la saisie de l'utilisateur est un nombre. Si oui je veux la fonction de courir d'autre veut pour l'alerter et l'exécuter à nouveau.
Console.WriteLine(String.Concat("choose your action" ,Environment.NewLine ,
"1.Deposit", Environment.NewLine,
"2.Withdraw", Environment.NewLine,
"3.CheckAccount"));
string c = Console.ReadLine();
int value = Convert.ToInt32(c);
if (value==char.IsLetterOrDigit(value)) //<----- no good why?
{
switch (value)
{
case 1:
Deposit();
return;
case 2:
Withdraw();
return;
case 3:
CheckAccount();
return;
}
}
- Pas besoin de l'aide de
String.Concat
mate! Il y a un opérateur, à savoir l'opérateur de concaténation de chaîne+
, qui est optimisé en appel àString.Concat
.
Vous devez vous connecter pour publier un commentaire.
Suffit d'utiliser:
EDIT: pour adapter le code pour que l'auteur du commentaire:
false
dans le cas où le nombre n'est pas entier. J'ai édité mon post pour l'adapter à votre deuxième demande.out
ici? Est-il possible de l'omettre ?int valeur = Convert.ToInt32(c);
c'est aller à l'échec si c n'est pas une chaîne constituée de nombres entiers.
utiliser try catch pour gérer cette situation.
TryParse
, c'est beaucoup plus rapide. Je n'ai pas testé sur .NET mais la Mono m'a donné 649 millisecondes pour votre méthode et 47 millisecondes pourTryParse
pour ce test: pastebin.com/HfLjqTqg.