none
Musterlösung meiner Übung falsch? RRS feed

  • 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.

    Donnerstag, 20. Oktober 2016 12:40

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
    Donnerstag, 20. Oktober 2016 13:29

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
    Donnerstag, 20. Oktober 2016 13:29
  • Vielen Dank! Mache den Fehler schon zum zweiten Mal und es ist mir trotzdem nicht aufgefallen.
    Hoffentlich bleibt es jetzt hängen. Danke!
    Donnerstag, 20. Oktober 2016 14:16