Verschachtelte Schleifen

Status
Nicht offen für weitere Antworten.

SegFault

Bekanntes Mitglied
Hallo Zusammen ich habe folgendes Problem mit Schleifen. Ich mach das jetzt mal in einer Art Pseudo Java Code
Code:
while( irgendwas )  //Schleife 1.
{
    tue_was();
    while( was anderes ) //Schleife 2.
    {
         if ( bedingung1 )
         {
              //Hier muss zum Anfang der Schleife 1 gesprungen werden
         }
         else if ( bedingung2 )
         {
              //Hier muss zum Anfang der Schleife 2 gesprungen werden(Ich denke ein einfaches continue genügt)
         }
         else
         {
              //Beide Schleifen Abbrechen und normalen ablauf fortsetzen
          }
     }
}

Das ganze soll auch noch tiefer verschachtelt gehen. Dabei sollten in der letzten Schleife immer n+1 Bedingungen geprüft werden. Wobei jede Bedingung dazu führt das irgend eine übergeordnete Schleife erneut ausgeführt wird (Wie kann ich also gezielt zu Schleifen springen). Nur der Else Block führt zum Abbruch aller Schleifen. Mir fällt spontan nichts ein wie ich das (sinnvoll) lösen kann.
 

0x7F800000

Top Contributor
Code:
              //Hier muss zum Anfang der Schleife 1 gesprungen werden
Ich sag jetzt zwar was, aber ich will dass du es am besten gleich wieder vergisst. In java sind prinzipiell labels erlaubt:
Java:
outer: for(;;){
   //do stuff
   for(;;){
       //do stuff
       if(thisOrThat){
            break outer; //oder continue outer
       }
    }
}
diese sollte man aber nur in ausnahmefällen bzw. gar nicht verwenden.
Das ganze soll auch noch tiefer verschachtelt gehen.
wie tief denn? Alles was wesentlich komplexer als 2 verschachtelte schleifen ist, ist hack. Man sollte dann einzelne schleifen in separate hilfsmethoden auslagern.
Dabei sollten in der letzten Schleife immer n+1 Bedingungen geprüft werden. Wobei jede Bedingung dazu führt das irgend eine übergeordnete Schleife erneut ausgeführt wird
Nix für ungut, aber das hört sich so an, als ob jemand, der die rekursion nicht gerafft hat, sich in den Fuß schießen will. :eek: Was hast du genau vor?
 

icarus2

Top Contributor
So etwas hier wäre möglich:

Java:
while(irgendwas){
		
		boolean unterbrechen = false;
		
		while(was anderes){
			if (bedingug1){
				break;			
			}
			else if(bedingug2){
				continue;
			}
			else {
				unterbrechen = true;
				break;
			}
		}
		
		if(unterbrechen){
			break;
		}
	}
 
S

SlaterB

Gast
mach ne int-Variable returnTo = 1, 2, 3 .., wenn nicht Abbruch dann INT_MAX_VALUE

am Ende jeder Schleife kommt ein Block
Java:
if (returnTo <= eigene Stufe) {
  if (returnTo == eigene Stufe) {
     continue;
  }
  break;
}
 

0x7F800000

Top Contributor
Java:
		if(unterbrechen){
			break;
		}
	}
uh je oh je... Das ist ja noch hackiger als goto's :autsch: Die goto's erfordern zumindest keine zusätzlichen unnötigen if-abfragen. :noe:


mach ne int-Variable returnTo = 1, 2, 3 .., wenn nicht Abbruch dann INT_MAX_VALUE

am Ende jeder Schleife kommt ein Block
Java:
if (returnTo <= eigene Stufe) {
  if (returnTo == eigene Stufe) {
     continue;
  }
  break;
}
Zwar unüblich, aber hin und wieder kann man ja auch mal Slater'sB Vorschläge in Frage stellen... ???:L Wozu soll denn so ein Konstrukt gut sein? :rtfm:
 
Zuletzt bearbeitet:

icarus2

Top Contributor
Nun ja, schön ist es nicht, das stimmt. Wenn immer n ums 1 erhöht werden muss würde sich vielleicht wirklich die Rekursion anbieten.

Edit:

[Java]
while(!unterbrechen){

while(was anderes){
if (bedingug1){
break;
}
else if(bedingug2){
continue;
}
else {
unterbrechen = true;
break;
}
}
}
[/Java]

Ist das so etwas weniger grässlich?
 
Zuletzt bearbeitet:

SegFault

Bekanntes Mitglied
Das es sehr an ein GOTO Erinnert war mir klar, war auch mein erster Gedanke aber das gibts ja nicht.

Vielleicht komme ich doch eher weiter wenn ich sage was ich damit machen will.
Ich möchte Automatisiert Quellcode erzeugen. Das ganze geschieht aufgrund eines Petrinetzes.
Optisch sieht das ein wenig wie ein Programmablaufplan aus.
Und dort ist es erlaubt Konstrukte zu erzeugen die im Ablauf eine Verzweigung beinhalten welche innerhalb eines Verzweigungspfades an weiter vorne liegenden Stellen springen. Und das muss ich nun irgendwie hinbiegen und wollte das per Schleife lösen.

Mir fällt auch keine wirklich brauchbare lösung ein. Ich denke auch in der Realtität wird dieser Fall so gut wie nie vorkommen somit werde ich ihn per Definition ausschließen.
 

0x7F800000

Top Contributor
hmm, nun ja, im generierten code ist schon einiges mehr erlaubt, der zählt nicht so ganz als code, der soll einfach nur stimmen.

Was du da aber genau machen willst kann ich mir persönlich nicht so recht vorstellen, vielleicht weiß hier einer mehr von petrinetzen... :oops:
 

SegFault

Bekanntes Mitglied
Prinzipiell sind Petrinetze nichts anderes als eine art Programmablaufplan, nur eben für Parallele Prozesse. Die Parallelität hab ich jetzt aber erstmal hier rausgelassen weil sie für das Problem hier kein Bezug haben.

GGf generier ich labels oder ich nehme einfache Schleifen und sorge dafür das ein Über Kreuz aufrufen von solchen Schleifen nicht erlaubt ist. Das sollte sich Auswerten lassen. So das geschachtelte Schleifen OK sind aber sobald ich höher als eine Ebene zurück Springen will (einfaches break, bzw continue) wird das nicht erlaubt.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
F KI / Machine Learning Parameter verschachtelte for Schleifen Allgemeine Java-Themen 2
F KI / Machine Learning Parameter verschachtelte for Schleifen Allgemeine Java-Themen 1
R n verschachtelte Schleifen? Allgemeine Java-Themen 14
T Verschachtelte Schleifen abbrechen Allgemeine Java-Themen 3
M Verschachtelte Schleifen (unbekannte Tiefe) Allgemeine Java-Themen 3
T Verschachtelte For-Schleife gibt falschen Wert zurück, Abbruchbedingung evtl. falsch? Allgemeine Java-Themen 9
A verschachtelte for-Schleife in einen Stream umwandeln? Allgemeine Java-Themen 4
O Datentypen Erstellung eines Containers, der verschachtelte Map-Strukturen beherbergen kann Allgemeine Java-Themen 0
Z Datentypen Verschachtelte Generics Allgemeine Java-Themen 1
D Verschachtelte HashMap initializieren Allgemeine Java-Themen 1
G Verschachtelte Generics Allgemeine Java-Themen 2
Loyd Noch ne Regex-Frage: Verschachtelte Ausdrücke Allgemeine Java-Themen 4
G Verschachtelte Treemaps, nach Value sortieren Allgemeine Java-Themen 11
J Verschachtelte ListIteratoren um in zwei Listen hin und herzugehen Allgemeine Java-Themen 5
O Verschachtelte Iteration: Innere Iteration abbrechen Allgemeine Java-Themen 3
A Parallele Threads oder verschachtelte? Allgemeine Java-Themen 7
S verschachtelte for-Schleife Allgemeine Java-Themen 2
R Verschachtelte Arrays Allgemeine Java-Themen 2
E Probleme beim Zugriff auf verschachtelte Vektoren Allgemeine Java-Themen 16
F verschachtelte Methoden auflösen Allgemeine Java-Themen 2
A Mehrere for-Schleifen Allgemeine Java-Themen 2
Monokuma Foreach Schleifen in Streams umändern Allgemeine Java-Themen 23
Junger_Basileus Attribute, Arrays, Schleifen Allgemeine Java-Themen 9
E Angabe wie groß Array sein soll und in for-schleifen diesen Array füllen Allgemeine Java-Themen 3
D Integer-Array variabler Größe mit Zahlen befüllen (Schleifen) Allgemeine Java-Themen 0
C Schachbrett mit while-schleifen Allgemeine Java-Themen 7
P Erste Schritte Dynamische Anzahl von verschachtelten Schleifen Allgemeine Java-Themen 5
R kann man irgendwie mit Arrays mit Eingabefenstern und Schleifen Werte abklappern? Allgemeine Java-Themen 2
S Welcher Schleifen type für eine Berechnung Allgemeine Java-Themen 7
R Schleifen Allgemeine Java-Themen 11
L for-Schleifen Zählfehler Allgemeine Java-Themen 6
G Code nach Schleifen und Verzweigungen durchsuchen Allgemeine Java-Themen 6
S verzweigungen und schleifen Allgemeine Java-Themen 24
B BigDecimal Schleifen Allgemeine Java-Themen 9
prakdi Zeit zum Durchlauf der Schleifen unverständlich!? Allgemeine Java-Themen 3
B Auslagerung von verschachtelten Schleifen Allgemeine Java-Themen 11
Meldanor For-Schleifen - byte statt int? Allgemeine Java-Themen 11
Z GC -> Allokation in Schleifen Allgemeine Java-Themen 25
A Fibonacci-Zahlen & kopfgesteuerte Schleifen & Strukt Allgemeine Java-Themen 8
V Vererbung und Schleifen Allgemeine Java-Themen 5
W kompliziertes Konstrukt von Schleifen/If/else. Rekursion? Allgemeine Java-Themen 22
S schleifen Allgemeine Java-Themen 3
A Schleifen in Ant? Allgemeine Java-Themen 5
G Methode mit Schleifen NullPointerException Allgemeine Java-Themen 2
L Schleife über Schleifen Allgemeine Java-Themen 4
N Code verkürzen(mit schleifen)? Allgemeine Java-Themen 10
C Effektivitaet bei for Schleifen Allgemeine Java-Themen 18
C Performance von FOR Schleifen Allgemeine Java-Themen 25
R Lohnt sich byte und short bei Schleifen? Allgemeine Java-Themen 9
P Schleifen liefern Werte nicht wie erwartet Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben