[Erledigt] Marken bei Schleifen für break und continue

Hi,

sollte man Marken bei Schleifen nicht verwenden? Ist das ein schlechter Programmierstil, wenn man Marken benutzt?

Könnte jemand bitte trotzdem ein einfaches Beispiel von Marken in Schleifen zeigen für break und continue?

Danke

naja sollte, könnte, müsste :wink:
sie machen Code nicht wirklich einfach lesbar und daher sollte man sie meiden, aber es lässt sich manchmal nicht vermeiden

label: for(int i=0;i<100;i++)
   for(int y =0 ;y<100;y++)
     if( y==10)
       break label;

das sollte klappen (habs nicht getestet)

Noch ein Beispiel:

/*
 * MarkeDemo.java
 * 
 * Sprünge zu Marken führen meist zu Spaghetticode und sind somit nicht zu empfehlen.
 * Hier ist ein Beispiel um die Funktionsweise zu erklären,
 * aber nicht um nachzuahmen. Es soll lediglich helfen, den Spaghetticode 
 * anderer zu verstehen.
 */
class MarkeDemo {
    public static void main(String[] args) {
        int i;
        String searchMe = "Look for a substring in me";
        String substring = "sub";
        boolean foundIt = false;
        int max = searchMe.length() - substring.length();
        lookFor: for (i = 0; i <= max; i++) {
            int n = substring.length();
            int j = i;
            int k = 0;
            while (true) {
                if(n-- == 0) {
                    foundIt = true;
                    break lookFor; //verlasse die lookFor-Schleife
                }
                if (searchMe.charAt(j++) != substring.charAt(k++))
                    continue lookFor;  //weiter mit lookFor-Schleife
            }
        }
        System.out.println(searchMe);
        System.out.println(foundIt ? ("Found '" + substring +
                "' at postition "+i) : "Didn't find it");
    }
}```

Danke euch beiden!

Ich werde dann diese Marken lieber nicht verwenden.

die helfen halt nur wenn du auf normalem Weg mit break oder continue nicht weiter kommst

PHP hat da beispielsweise einen anderen Lösungsansatz, da Labels nicht unterstützt werden, kann man bei den break/continue - Anweisungen einfach die Ebene der jeweiligen Schleife angeben die beendet/fortgesetzt werden soll.

So wäre aus dem Beispiel:


break lookFor;    == break(2);

continue lookFor; == continue(2); || break;```

Gut Schuß
VuuRWerK ;)

[EDIT]
Im übrigen soll ab PHP6 auch Labels unterstützt werden.
[/EDIT]