Zu bestimmte Stellen im code springen?

D

David Nienhaus

Gast
Hallo liebe Leute,

mich würde mal interessieren, ob es eine Möglichkeit an bestimmte Stellen im code zu springen.
Angenommen ich habe eine while-Schleife und möchte falls etwas bestimmtes passiert an eine ganz bestimmte Stelle der while-Schleife springen, ohne, dass die eigentlich noch folgenden Methoden ausgeführt bzw. die normale Reihenfolge abgearbeitet wird.
Angenommen es wurden gerade 50% der while schleife abgearbeitet, jetzt ist eine bestimmte Bedingung erfüllt und ich will zu Stelle x der while Schleifen springen -> die letzten 50% sollen übersprungen werden und alles was vor Stelle x steht soll ebenfalls übersprungen werden. Geht sowas?
 

httpdigest

Top Contributor
Kommt darauf an, was du mit "50% der while Schleife" ganz genau meinst.
a) Meinst du 50% des Bodies der while-Schleife, also die Instruktionen, die während jeder Iteration jeweils ausgeführt werden
b) oder meinst du damit 50% der Iterationen der while-Schleife...
Für Fall a) gibt es die if-Anweisung, mit der du Code konditional ausführen kannst
Für Fall b) gibt es die break Anweisung.
 

Blender3D

Top Contributor
Es gibt die Möglichkeit Sprungmarken zu definieren.
Ist aber ein Codestiel der nicht zu empfehlen ist.:confused:
Java:
public class Uebung9 {

    public static void main(String[] args) {
        System.out.println("Marke 1");
        for (int i = 0; i <= 2; i++) {
            System.out.println("Marke 2 mit i=" + i);
            SprungZuJ: for (int j = 0; j <= 2; j++) {
                System.out.println("Marke 3 mit i=" + i + "| j=" + j);
                for (int k = 0; k <= 2; k++) {
                    System.out.println("Marke 4 mit i=" + i + "| j=" + j + "| k=" + k);
                    if (k == 1) {
                        System.out.println("Marke 5 mit i=" + i + "| j=" + j + "| k=" + k);
                        break SprungZuJ;
                    }
                }
            }
            System.out.println("Marke 6 mit i=" + i);
        }
    }
}
 
D

David Nienhaus

Gast
Also 50% war einfach ein Beispiel für eine beliebige Stelle y im code.
Kann man der break Anweisung denn auch sagen, wo sie dann nue ansetzen soll?
Ich stelle mir das in etwa so vor:
Code:
while (...){
..
..
Stelle c: 
{....}
...
..
...
Stelle x:  if (Fall y tritt ein)
{
springe zu Stelle c
}
..
}
 

mrBrown

Super-Moderator
Mitarbeiter
Dein Beispiel lässt sich mit do-while abbilden:
Code:
while (...){
  ..
  ..
  do { //stelle c
    {....}
    ...
    ..
    ...
  } while (Fall y tritt ein);//stelle x
  ..
}

Aber ob das so empfehlenswert ist? In den meisten Fällen führt sowas zu völlig unübersichtlichem Code...
 

Javinner

Top Contributor
@David Nienhaus
Das erinnert mich an die Zeit, als die CNC-Maschinen nur ein sehr begrenzten Speicher hatten. Dann haben wir auch mit Unterprogrammen und Sprüngen arbeiten müssen.. Gott sei Dank, ist diese Zeit vorbei! ;)
 

Thallius

Top Contributor
Also ich finde einen gut platzierten GOTO heute immer noch leserlicherlicher als so manche 5 Fach verschachtelte while schleife. Aber leider ist das ja nicht mehr in...
 

mrBrown

Super-Moderator
Mitarbeiter
Alles ist lesbarer als 5 verschachtelte Schleifen, deshalb nutzt man die ja auch nicht...
Aber ich wüsste auch nicht, wo man in Java ein GOTO bräuchte, vor allem in diesem Fall scheint der Zweck ja auch einfach nur ein „wiederholen, so lange etwas gilt“ zu sein
 

Neue Themen


Oben