Ist es in einer for-Schleife möglich, das Abbruchkriterium der Schleife dynamisch anzupassen?

Das Abbruchkriterium in einer for-Schleife kann auf unterschiedliche Weise dynamisch angepasst werden.

Eine Möglichkeit ist die Verwendung einer boolean-Variable als Abbruchkriterium. Im folgenden Beispiel ist der boolean doIt initial true. Beim Eintreten eines bestimmten Ereignisses (i == 5) wird er in der Schleife auf false gesetzt und bewirkt einen Abbruch der Schleife.

boolean doIt = true;
for (int i = 0; doIt; i++) {
    if (i == 5) {
        doIt = false;
    }
    System.out.println(i);
}
// Ausgabe: 0 1 2 3 4 5

Eine weitere Möglichkeit die Schleife bei einem bestimmten Ereignis zu beenden, ist die Verwendung der break-Anweisung. Die break-Anweisung bewirkt, dass die Schleife sofort verlassen wird. Im folgenden Beispiel wird die Schleife beendet, wenn in einem Text zwei Mal das gleiche Zeichen in Folge auftritt.

char ca[] = "Hello".toCharArray();
char lastChar = 0;
for (int i = 0; i < ca.length; i++) {
    char aktChar = ca[i];
    if (lastChar == aktChar) {
        System.out.println("Zwei gleiche Zeichen in Folge: " + aktChar);
        break;
    }
    lastChar = aktChar;
}
// Ausgabe: Zwei gleiche Zeichen in Folge: l

Im letzten Beispiel wird ein Histogramm gezeichnet. Das Abbruchkriterium der inneren Schleife wird durch die Daten in einem Array bestimmt.

int a[] = { 2, 3, 7, 14, 8, 4, 3 };

for (int i = 0; i < a.length; i++) {
    for (int j = 0; j < a[i]; j++) {
        System.out.print('*');
    }
    System.out.println();
}
// Ausgabe:
// **
// ***
// *******
// **************
// ********
// ****
// ***