Azubine27 Geschrieben 12. September 2007 Geschrieben 12. September 2007 Hallo ich habe bei dem nachfolgenden Thema ein Problem. Ich habe eine Switchanweisung. Ich möchte prüfen ob die eingegebene Zahl tatsächlich eine ganze Zahl ist. Denn wenn es keine ganze Zahl ist, möchte ich eine Fehlermeldung ausgeben. so lange es sich um eine ganze Zahl handelt, habe ich keine Probleme. Aber sobald ich eine Kommzahl eingebe gibt es natürlich eine Fehlermeldung, da es ja eine Integer Zahl ist. Macht ja auch Sinn. Aber ich habe das Ganze schon versucht, indem ich double genommen habe. Dann funktioniert aber die Switchanweisung nicht mehr. Kann mir da jemand bei helfen? Code: string Eingabe; int Auswahl; Console.WriteLine("Bitte treffen Sie Ihre Auswahl "); Eingabe = Console.ReadLine(); Auswahl = Convert.ToInt32(Eingabe); if (Auswahl % 2 == 0|| Auswahl % 2==1) switch (Auswahl) { case 1: Console.WriteLine("Präfixinkrementoperation"); break; case 2: Console.WriteLine("Postfixinkrementoperation"); break; case 3: Console.WriteLine("Präfixdekrementoperation"); break; case 4: Console.WriteLine("Postfixdekrementoperation"); break; case 5: Console.WriteLine("Ende"); break; } else { Console.WriteLine("Bitte geben Sie eine gültige Eingabe ein!"); }
Guybrush Threepwood Geschrieben 12. September 2007 Geschrieben 12. September 2007 Das kannst du einfach mit TryParse machen: string str = Console.ReadLine(); int i; if (Int32.TryParse(str, out i)) Console.WriteLine("Zahl: {0}", i); else Console.WriteLine("KeinZahl!"); [/PHP] Ansonsten müsstest du halt bei Convert.ToInt32 die Exception abfangen und entsprechend reagieren, aber so ists viel einfacher.
Azubine27 Geschrieben 12. September 2007 Autor Geschrieben 12. September 2007 Tur mir leid, keine Ahnung wie ich das konkret umsetzen soll. Aber danke.
Gast alexC++ Geschrieben 12. September 2007 Geschrieben 12. September 2007 mit try und catch try { probieren zu wandeln; } catch(Exception e) { z.B. Messagebox ausgeben mit "Huhu du da! ein fehler ist aufgetreten; }
Cadpax Geschrieben 12. September 2007 Geschrieben 12. September 2007 Tur mir leid, keine Ahnung wie ich das konkret umsetzen soll. Aber danke. Wo liegt denn genau dein Problem? Wert.TryParse-Syntax? Mit freundlichen Grüßen, Cadpax
Azubine27 Geschrieben 14. September 2007 Autor Geschrieben 14. September 2007 # Hallo, ich habe eine Frage. Dieses Prorämmchen läuft soweit. Eine Auswahl wird getroffen. Wird die falsche Zahl eingegeben, wiederholt sich die Main Methode. Jetzt meine Frage, wie kann ich dabei darauf eingehen, dass z.B. keine Kommazahlen eingegeben werden dürfen bzw, dass das Programm dann nicht abbricht. Kann mir jemand den kleinen Teil in meinem kleinen Progrämmchen bitte ergänzen?? Das wäre super. static void Main() { Console.WriteLine("Bitte treffen Sie Ihre Auswahl: "); string Eingabe=Console.ReadLine(); int Auswahl = Convert.ToInt32(Eingabe); switch (Auswahl) { case 1: Console.WriteLine("Nr.1"); break; case 2: Console.WriteLine("Nr.2"); break; case 3: Console.WriteLine("Nr.3"); break; case 4: Console.WriteLine("Nr.4"); break; case 5: Console.WriteLine("Nr.5"); break; default: Console.Clear(); Main() break; } } LG, Azubine
Azubine27 Geschrieben 14. September 2007 Autor Geschrieben 14. September 2007 Trotzdem danke an alle. Auch wenn ich schon längst kapiert habe, dass ich dafür TryParse() nehmen soll. Finde dazu nur keine vernünftigem Beispiele im Netz und weiß daher nicht, wie ich es anwenden soll. Das PHP Beispiel ist gut nur lässt sich das bei mir nicht umsetzen trotz Abänderung. Ich bin mir sicher, dass es 99% von euch reicht zu wissen welche Methode man braucht. Aber es gibt wirklich blutige Anfänger denen das alleine ohne Syntax und ohne Zusammenhang einfach nichts sagt.
Guybrush Threepwood Geschrieben 14. September 2007 Geschrieben 14. September 2007 Das oben war kein PHP Beispiel, das ist nur die Formatierung des Formungs für Quellcode. Laut MSDN gibt TryParse true zurück wenn es den Wert umwandeln konnte und false wenn nicht. Daraus ergibt sich dann einfach: static void Main(string[] args) { Console.WriteLine("Bitte treffen Sie Ihre Auswahl: "); string Eingabe=Console.ReadLine(); int Auswahl; if (int.TryParse(Eingabe, out Auswahl)) { switch (Auswahl) { case 1: Console.WriteLine("Nr.1"); break; case 2: Console.WriteLine("Nr.2"); break; case 3: Console.WriteLine("Nr.3"); break; case 4: Console.WriteLine("Nr.4"); break; case 5: Console.WriteLine("Nr.5"); break; default: Console.Clear(); break; } } else Console.WriteLine("Keine Zahl eingegeben!"); } [/PHP] Das was du im default Teil der switch Anweisung mit dem Main() Aufruf versucht hast solltest du übrigensin jedem Fall vergessen weil du damit eine Rekursion erzeugst. Wenn du die Eingabe so lange wiederholen willst bis eine Zahl eingegeben wurde musst du eine Schleife um den Teil setzen.
Azubine27 Geschrieben 14. September 2007 Autor Geschrieben 14. September 2007 Oh, tausend Dank. verstehe es. Hatte deinen ersten Code zwar versucht, aber anscheinend falsch. Daher dachte ich es sei php. Auch wenn mir grundsätzlich nach C# aussah. Danke Schön :-)
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden