break für die erste Schleife



  • Wenn ich eine zweite Schleife while oder for in der ersten Schleife drin hab, soll break auch die erste brechen. Wie geht das am besten?

    for(//irgendwas)
    {
    // do something...
         for(//irgendwas) 
         {
            if(//anweisung)
               break; // bricht nur die zweite Schleife
            // do something...       
         }
    // do something...
    }
    

    nur so ?

    bool x  = false;
    while()
    {
    // do something...
         while() 
         {
            if(//anweisung) {
               x = true; // für die erste Schleife
               break; // für die zweite schleife
            }
            // do something...       
         }
    if(x = true) break;
    // do something...
    }
    


  • xBlackKnightx schrieb:

    Wenn ich eine zweite Schleife while oder for in der ersten Schleife drin hab, soll break auch den ersten brechen.

    Ich hoffe mal, ich hab das richtig verstanden. Nächstes Mal bitte ein wenig sorgfältiger formulieren. 😉

    Nein, so wie bei dir im zweiten Beispiel würde ich es nicht machen. Das sauberste ist wohl, die äussere Schleife in eine Funktion auszulagern und per return zurückzukehren.



  • goto.
    Das ist zumindest semantisch identisch mit einem break, das aus beiden Schleifen springt und wenn du genau das willst ist goto was du willst.

    edit: if(x = true) ist übrigens falsch, wenn dann if(x == true) und eher if(x)



  • Hast schon richtig verstanden, Grammatik war am Schluß ein bißl falsch. Problem ist nur, dass in der Funktion viele Objekte, dann nicht mehr erkannt werden. Müsste man eine riesige Argumentenliste machen und alle darauf referenzieren.

    ich dachte an goto Befehl ohne dass es Spagetthiverbindung wird ^^



  • JustAnotherNoob schrieb:

    goto.
    Das ist zumindest semantisch identisch mit einem break, das aus beiden Schleifen springt und wenn du genau das willst ist goto was du willst.

    Ich wusste genau, dass das jemand schreiben würde. Ich habs selbst allerdings gelassen, weil es zu anderen Situationen verführt, in denen man schnell Fehler begehen kann. Dazu kommt, dass in verschachtelten Schleifen oft bereits so viel Code steht, dass dieser eine eigene Funktion wert ist. Von daher sagte ich auch "am saubersten". Aber wenn goto richtig eingesetzt wird, sollte es okay sein.



  • JustAnotherNoob schrieb:

    goto.
    Das ist zumindest semantisch identisch mit einem break, das aus beiden Schleifen springt und wenn du genau das willst ist goto was du willst.

    edit: if(x = true) ist übrigens falsch, wenn dann if(x == true) und eher if(x)

    ja das dachte ich mir auch, danke



  • xBlackKnightx schrieb:

    Problem ist nur, dass in der Funktion viele Objekte, dann nicht mehr erkannt werden. Müsste man eine riesige Argumentenliste machen und alle darauf referenzieren.

    ich dachte an goto Befehl ohne dass es Spagetthiverbindung wird ^^

    Eeeer.
    HÄ? 😕

    Ich verstehe kein Wort von dem was du da schreibst. Kannst du das nochmal auf Deutsch wiederholen?


Anmelden zum Antworten