Nicht alle Codepfade geben ein Wert zurück?

3 Antworten

Hauptproblem: Schlechtes Design! Hier ist Oberflächenbehandlung total in die Verwaltung der Kungeln reingemischt.

Die Funktion

Kugel GetKugel()

Liefert nicht immer eine Kugel zurück!

Manchmal beschwert sie sich über leere Eingabe, oder ungültige Eingabe.

Eine Kugel liefert sie nur zurück, wenn alle Eingaben passen.

Eine solche Funktion solltest Du nur aufrufen, wenn alles passt und dann eine Kugel zurückliefern kann.

Andernfalls musst Du in den schlechten Fällen wenigstens null zurückgeben.

(P.S. wieso struct und nicht Class Kugel? Wieso generierst Du eine Kugel in sich selbst?)

p4wn33688 
Fragesteller
 14.05.2021, 00:20

ohje.. ok und wie mache ich das am einfachsten?

0
p4wn33688 
Fragesteller
 14.05.2021, 00:25
@DerEinsiedler

na ja weiter unten sind nur ein paar Berechnungen aber mehr nicht, ist nur ein übungsprogramm welcher die Masse des körpers ausrechnen soll

0
DerEinsiedler  14.05.2021, 00:27
@p4wn33688

Hängt ein bisschen davon ab, wo und wie Du GetKugel() benutzen willst.

Mach die Tests, ob alle Eingaben passen da wo Du die Kugel haben willst und rufe nur dann GetKugel() auf.

Oder schreibe eben

return null;

in den if und den ersten else-Zweig rein.

Und mach aus dem Struct Kugel bitte sowas:

private class Kugel
{
    public double radius{ get; set; } 
    public double rg{ get; set; } 
}
0
p4wn33688 
Fragesteller
 14.05.2021, 00:47
@DerEinsiedler

ok aber aus der struct eine class? und jetzt bekomme ich den Fehler das die Variable kug nicht zugewiesen sei (nur in dem else baum, wo anders kein thema).. wie weise ich diese zu?

0
DonkeyShot  14.05.2021, 00:23
"Wieso generierst Du eine Kugel in sich selbst"

Dachte ich auch erst. Sieht aufgrund der Einrückung nur so aus. GetKugel ist eine Methode der Form.

0

Steh ich aufm Schlauch, oder wird der letzte else-Zweig nie erreicht? Wenn die Textbox leer ist, wird der erste Block ausgeführt. Ansonsten ist sie ja nicht leer, und dann ist die zweite Bedingung immer true.

Woher ich das weiß:Studium / Ausbildung – Datenverarbeitungs-Kfm, Hobby- und Profi-Programmierer
p4wn33688 
Fragesteller
 14.05.2021, 00:29

ich habe das gerade getestet und interessanter weise kann ich durch meinen failsafe welche nur zahlen erlaubt, keine zahlen mehr eingeben obwohl das vorher problemlos geklappt und somit erreiche nur diesen und dann stürzt es ab mit "Input string was not in a correct format"

aber das ist mir auch gerade aufgefallen, dass die ersten beiden dasselbe machen..

0

Deine beiden Fehlerdialogs-Verzweigungen returnen keinen Wert.

p4wn33688 
Fragesteller
 14.05.2021, 00:20

ist das denn zwingend notwenig, bei diesem design, schließlich wird nur ein wert geprüft ob dieser vorhanden ist oder nicht

0
Fuxicracker  14.05.2021, 00:22
@p4wn33688

Ja ist es, denn in deiner Funktionsdeklaration gibst du an, dass deine Funktion zwingend einen Wert des Typ "Kugel" zurückgibt.

0