J'ai écrit mes codes et je tiens à le valider dans telle manière que cela ne permettra que les intergers d'être entrés et non des alphabets. Voici le code, s'il vous plaît, je t'aimerai 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(); } } }
10 Réponses :
Vous devez tester si c'est un int au lieu de convertir tout de suite.
Essayez quelque chose comme:
appelez simplement readline () et boucle avec int.tryparse jusqu'à ce que l'utilisateur entrait un numéro valide :) espère que vous aide p> p>
Ne convertissez pas l'entrée de l'utilisateur immédiatement. Mettez-le dans une chaîne et utilisez INT32.TRYPARSE (...) pour savoir si un nombre a été saisi ou non. Comme ceci:
Wow est-ce qu'un enregistrement ayant toutes ces solutions jeté en même temps? Devrions-nous les supprimer?
Notez que est équivalent à p> et que cette dernière forme introduit moins de nidification et est plus lisible, en particulier si votre Le code grandit plus complexe. En outre, vous devriez probablement CONTERT.TOINT32 CODE> - Il possède un boîtier de coin particulièrement mal conçu et surprenant; Et c'est aussi moins de sécurité que
int.parse code> qui est le choix supérieur dans la mesure du possible - ou
int.tryparse code> lorsque vous n'êtes pas sûr de savoir si la chaîne est valide. Fondamentalement, évitez
convert .... code> dans la mesure du possible. P> p>
Ma solution préférée serait: Bien sûr, en fonction de la spécification (si un nombre non valide est réessayé?), il peut être nécessaire d'être modifié. P> P> P> >
Le code? un puzzle? Hmm, ce n'est pas bon :-) - J'avais l'intention de faire la composition des fonctionnalités et d'éviter les grandes fonctions - je suppose que la fonction génératrice prend un peu d'habitude de s'habituer à ...
Pour obtenir la console pour filtrer les frappes alphabétiques, vous devez prendre une analyse de saisie. La méthode Console.Readkey () est fondamentale pour cela, il vous permet de renifler la clé pressée. Voici un exemple de mise en œuvre:
static string ReadNumber() { var buf = new StringBuilder(); for (; ; ) { var key = Console.ReadKey(true); if (key.Key == ConsoleKey.Enter && buf.Length > 0) { return buf.ToString() ; } else if (key.Key == ConsoleKey.Backspace && buf.Length > 0) { buf.Remove(buf.Length-1, 1); Console.Write("\b \b"); } else if ("0123456789.-".Contains(key.KeyChar)) { buf.Append(key.KeyChar); Console.Write(key.KeyChar); } else { Console.Beep(); } } }
+1 Mais vous devriez probablement valider les modificateurs :-) (Ctrl, Alt ...)
C'est vrai. Appelons cela une fonctionnalité :)
Je viens de prolonger la réponse passante @hans (prenant soin de décimalseparator et "-"): p>
Essayez ce simple
string Temp; int tempInt,a; bool result=false; while ( result == false ) { Console.Write ("\n Enter A Number : "); Temp = Console.ReadLine (); result = int.TryParse (Temp, out tempInt); if ( result == false ) { Console.Write ("\n Please Enter Numbers Only."); } else { a=tempInt; break; } }
var getInput=Console.ReadLine(); int option; //validating input while(!int.TryParse(getInput, out option)) { Console.WriteLine("Incorrect input type. Please try again"); getInput=Console.ReadLine(); }