Comment puis-je valider d'entrée de la console comme des nombres entiers?
J'ai écrit mes codes et je veux valider d'une façon telle que cela permettra seulement des entiers pour être insérés et pas des alphabets. Voici le code, s'il vous plaît je vous aime de m'aider. Merci.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace minimum
{
class Program
{
static void Main(string[] args)
{
int a = Convert.ToInt32(Console.ReadLine());
int b = Convert.ToInt32(Console.ReadLine());
int c = Convert.ToInt32(Console.ReadLine());
if (a < b)
{
if (a < c)
{
Console.WriteLine(a + "is the minimum number");
}
}
if (b < a)
{
if (b < c)
{
Console.WriteLine(b + "is the minimum number");
}
}
if (c < a)
{
if (c < b)
{
Console.WriteLine(c + "is the minimum number");
}
}
Console.ReadLine();
}
}
}
Vous devez vous connecter pour publier un commentaire.
Vous devez tester si c'est un int au lieu de convertir tout de suite.
Essayez quelque chose comme :
Appelez simplement Readline() et de la boucle de l'Int.TryParse jusqu'à ce que l'utilisateur tape un nombre valide 🙂
Espère que ça aide
Pour obtenir la console de filtrer alphabétique des frappes de touches que vous avez à prendre d'entrée de l'analyse. De La Console.ReadKey() la méthode est fondamentale pour cela, il vous permet de renifler la touche enfoncée. Voici un exemple d'implémentation:
Vous pourriez ajouter, disons, Décimal.TryParse() dans l'instruction if() qui détecte la touche Entrée pour vérifier que la chaîne saisie est toujours un nombre valide. De cette façon, vous pouvez refuser l'entrée comme "1-2".
Ne pas Convertir l'entrée de l'utilisateur immédiatement. Le mettre dans une chaîne de caractères et l'utilisation Int32.TryParse(...) pour savoir si oui ou non un numéro a été saisi. Comme ceci:
Noter que
est équivalent à
et que cette dernière présente moins de nidification et est plus lisible, surtout si votre code devient plus complexe. Aussi, vous devriez probablement jamais utilisation
Convert.ToInt32
- elle est particulièrement mal conçu et surprenant cas de coin; et c'est aussi moins de type sûr queint.Parse
qui est le meilleur choix lorsque cela est possible - ouint.TryParse
lorsque vous n'êtes pas sûr de savoir si la chaîne est valide. En gros, éviter deConvert....
dans la mesure du possible.Ma solution préférée serait:
Bien sûr, en fonction de la spécification (devrait numéro invalide être retentée?), il peut avoir besoin d'être modifié.
Double/Float:
Je suis juste l'extension @Hans Passant de réponse (en Prenant soin de DecimalSeparator et "-"):
Essayez Ce Simple