2.5.7 | continue |
Die Anweisung continue darf nur innerhalb einer Schleife benutzt werden.
Sie bewirkt, dass die nachfolgenden Anweisungen im Schleifenrumpf übersprungen
werden und der nächste Schleifendurchgang
eingeleitet wird.
In der folgenden Schleife wird eine kleine Wertetabelle für eine Division
ausgegeben. continue wird dazu benutzt, das Auftreten der Null
als Divisor zu überspringen.
float dividend = 8;
int divisor;
for(divisor = -4; divisor < 5; divisor++) {
if (divisor == 0)
continue;
System.out.println(dividend / divisor);
}
Für den Fall, dass ein Schleifenrumpf aus einer try/finally-Anweisung
besteht, ist das Verhalten ähnlich wie wie bei break:
Die Ausführung des try-Blocks wird beendet, und vor
der Einleitung des nächsten Schleifendurchgangs wird noch
der finally-Block ausgeführt.
Im folgenden Beispiel sorgt die continue-Anweisung dafür, dass die
Verarbeitung des aktuellen Array-Elements abgebrochen und dass an
Stelle 1 verzweigt wird. Nach der Ausführung des finally-Blocks
beginnt der nächste Durchgang der while-Schleife.
index = 0;
while(index < 10)
try{
if (!check(a[index++]))
continue;
}
finally {
// Stelle 1
}
continue kann genauso wie break mit einer Marke versehen werden.
Zur Veranschaulichung soll das obige Beispiel so erweitert werden, dass die
while-Schleife in eine weitere Schleife eingebettet wird. Unter
der gleichen Bedingung soll nun direkt der nächste Durchgang der
äußeren Schleife begonnen werden:
aussen: while (flag) {
index = 0;
while(index < 10)
try{
if (!check(a[index++]))
continue aussen;
}
finally {
// Stelle 1
}
}
Hierbei ist zu beachten, dass auch unter Verwendung einer Marke zunächst der
finally-Block ausgeführt wird, sofern einer vorhanden ist.
Erst anschließend wird an die Marke aussen gesprungen und bei der zugehörigen Schleife
der nächste Durchlauf begonnen.