Veröffentlicht 12. September 200717 j 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!"); }
12. September 200717 j 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.
12. September 200717 j mit try und catch try { probieren zu wandeln; } catch(Exception e) { z.B. Messagebox ausgeben mit "Huhu du da! ein fehler ist aufgetreten; }
12. September 200717 j 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
14. September 200717 j # 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
14. September 200717 j 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.
14. September 200717 j 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.
14. September 200717 j 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 :-)
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.