Benutzer mit den meisten Antworten
Musterlösung meiner Übung falsch?

Frage
-
Hallo, ich mache gerade eine Übung aus meinem Buch, sogar mit Musterlösung. Aber ich denke ich muss gar nicht soweit ausholen.
private void cmdHakenAus_Click(object sender, EventArgs e) { if (h.Location.Y + h.Height + 5 < f.Location.Y) ; h.Height = h.Height + 10; }
Die Übung lautet einen Kran aus Panels zusammen zu stellen. Der Code oben ist nur ein kleiner Teil. Aber er funktioniert nicht wie er sollte. Laut Übung soll der Haken(h) des Krans sich senken bis auf ungefähr die Höhe des Fundaments(f) und dann soll eine weitere Absenkung nicht mehr möglich sein, beim Durchlauf kann ich jedoch den Haken bis in die Unendlichkeit verlängern.
Der Code wirkt auf mich zwar logisch, hätte ich genauso gemacht aber es muss ja einen Denkfehler geben. Welcher?Ist es schlimm wenn ich hier solche kleinen Fragen stelle? Wie ich mich kenne werden es viele weil ich immer alles genau verstehen will. Anderseits will aber auch nicht das Forum zu spamen.
Antworten
-
Hallo Volker,
die if Anweisung führt zu keinen Code der aufgrund dieser ausgeführt wird
if (h.Location.Y + h.Height + 5 < f.Location.Y) ;
damit die Bedingung überhaupt zu einer Anweisung führt, müsste etwas vor dem Semikolon stehen:
if (h.Location.Y + h.Height + 5 < f.Location.Y) /*tue irgendwas*/;
ggfls. braucht es mehrere Anweisungen:
if (h.Location.Y + h.Height + 5 < f.Location.Y) { /*Anweisung 1*/; /*Anweisung 2*/; }
Außerdem würde ich noch einmal über die Bedingung nachdenken, mir scheint diese so nicht korrekt zu sein.
Gruß
- Florian
- Als Antwort vorgeschlagen Elmar BoyeEditor Donnerstag, 20. Oktober 2016 13:31
- Als Antwort markiert Volker94 Donnerstag, 20. Oktober 2016 14:16
Alle Antworten
-
Hallo Volker,
die if Anweisung führt zu keinen Code der aufgrund dieser ausgeführt wird
if (h.Location.Y + h.Height + 5 < f.Location.Y) ;
damit die Bedingung überhaupt zu einer Anweisung führt, müsste etwas vor dem Semikolon stehen:
if (h.Location.Y + h.Height + 5 < f.Location.Y) /*tue irgendwas*/;
ggfls. braucht es mehrere Anweisungen:
if (h.Location.Y + h.Height + 5 < f.Location.Y) { /*Anweisung 1*/; /*Anweisung 2*/; }
Außerdem würde ich noch einmal über die Bedingung nachdenken, mir scheint diese so nicht korrekt zu sein.
Gruß
- Florian
- Als Antwort vorgeschlagen Elmar BoyeEditor Donnerstag, 20. Oktober 2016 13:31
- Als Antwort markiert Volker94 Donnerstag, 20. Oktober 2016 14:16