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
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
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]