Autor Beitrag
PhaxY
Hält's aus hier
Beiträge: 1



BeitragVerfasst: So 09.11.08 12:21 
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 user profile iconChristian S.: Beiträge zusammengefasst

funktion error_int ist für das Menü und die andere error_double für Höhe und Radius.
Einloggen, um Attachments anzusehen!
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: 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.
ausblenden 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:
ausblenden 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


Zuletzt bearbeitet von JüTho am So 09.11.08 15:12, insgesamt 1-mal bearbeitet
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: So 09.11.08 13:38 
Für eine Hausaufgabe natürlich völlig übertrieben, aber vielleicht für JüTho interessant :-)
www.c-sharp-forum.de...n+Strings_56882.html

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: So 09.11.08 15:11 
Danke, Christian.

Als Tipp zurück: Für where bei generischer Methode für Zahlen? habe ich Verschiedenes ausprobiert, um Max(Array) sinnvoll mit Vorgabewerten zu versehen. Das beste war noch:
ausblenden C#-Quelltext
1:
2:
static public T Max<T>(T[] varArray)
    where T: struct, IComparable

Gruß Jürgen
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: So 09.11.08 15:13 
[OT]
user profile iconRobert_G hat folgendes geschrieben Zum zitierten Posting springen:
Falls du das statische parse meinst, kannst du es ebenfalls knicken. Statische member(somit auch operatoren) kommen erst mit .Net3 für interfaces.
Hach, es hat nicht sollen sein :eyes: .
[/OT]

_________________
>λ=