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!"); } Zitieren
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. Zitieren
Azubine27 Geschrieben 12. September 2007 Autor Geschrieben 12. September 2007 Tur mir leid, keine Ahnung wie ich das konkret umsetzen soll. Aber danke. Zitieren
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; } Zitieren
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 Zitieren
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 Zitieren
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. Zitieren
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. Zitieren
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 :-) Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.