PhaxY - So 09.11.08 12:21
Titel: eine Problem im Konsolenprogramm bitte um Hilfe!!!!
und zwar haben wir als Hausaufgabe auf, dass wir ein Programm schreiben sollen mit Volumen, Grundfläche und und und von Körper berechnen sollen und wir sollen eine Klasse machen zu Fehlerüberprüfung, also das man wenn eine Person eine falsche Eingabe macht soll die Eingabe nochmal wiederholt werden. Einmal zur Menüauswahl und einmal zur Eingabe von Radius und Höhe das man da nur Zahlen eingeben kann. Im Menü soll nur ganze Zahlen ( int-zahlen) und für die Höhe und Radius sollte man auch Nachkommazahlen benutzten ( double- zahlen), z.b. 2.5. Mit dem Menü - Überprüfung funktioniert schon einwandfrei, nur ich weiß jetzt nicht wie ich das mit dem Radius und Höhe machen soll. Ich stelle mal meine Klasse CFehlerpruefung als Anhang mit rein.
PS: Ich bitte um Hilfe, am besten an meiner Klasse welche Zeile und was ich ändern könnte und was es bedeutet wär gut.
Danke schonmal für die Hilfe!!!!
mfg PhaxY
Moderiert von
Christian S.: Beiträge zusammengefasst
funktion error_int ist für das Menü und die andere error_double für Höhe und Radius.
JüTho - So 09.11.08 13:16
Hallo und :welcome:
eine eigene Klasse für die Fehlerprüfung halte ich für überdimensioniert; aber wenn es die Aufgabenstellung erfordert...
Meiner Ansicht nach sollte diese Klasse nur
static-Methoden haben: Es geht nur darum, dass eine Eingabe geprüft werden soll und ein Prüfungsergebnis zurückgegeben wird; davor und danach hat diese Klasse keinerlei Bedeutung. (Oder irre ich mich?)
Du kannst das also vereinfachen, zumal es eine passende int- bzw. double-Methode schon gibt. Ausdrückliches Lob dafür, dass Du schon Parse verwendest und nicht Convert.ToXxx; Kritik daran, dass Du Dich nicht zwischen bool und int/double als Rückgabe entscheiden kannst.
C#-Quelltext
1: 2: 3: 4: 5: 6: 7:
| public static int GetInteger(string input) { int result = 0; if (! Int32.TryParse(input, out result) || result < 0) result = 0; return result; } |
Der Vorteil von
TryParse ist, dass eine Exception vermieden wird und ein bool-Wert als Prüfungsergebnis gegeben wird; damit kannst Du es mit der zweiten Eingabeprüfung verknüpfen. Genauso geht es auch mit double.
Warnung: Man könnte versucht sein, beides mit einer
generischen Methode zusammenzufassen:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7:
| public static T GetValue<T>(string input) : where T ??? { T result; if (! T.TryParse(input, out result) || result < 0) result = 0; return result; } |
Das funktioniert aber nicht, weil es keinen gemeinsamen Typ IArithmetic gibt und weil geprüft werden müsste, ob der Typ T auch die TryParse-Methode kennt.
Ob Du weitere Fragen hast, kann ich aus Deinem Beitrag nicht erkennen. Jürgen