Hoofdstuk 8 — Lussen (for, while, do-while, foreach)
Herhaling automatiseer je met lussen. Je leert de vormen for, while, do-while en de enhanced for (foreach) voor arrays en collecties.
Voorbeeld 1 — Klassieke for-lus Introductie: De klassieke for-lus gebruikt een teller met start, voorwaarde en update.
public class ForKlassiek {
public static void main(String[] args) {
for (int i = 0; i < 3; i++) {
System.out.println(i);
}
}
}
Toelichting: Gebruik een for-lus als je precies weet hoe vaak je herhaalt.
Voorbeeld 2 — While-lus Introductie: While herhaalt zolang de voorwaarde waar is; controle vindt plaats vóór de iteratie.
public class WhileDemo {
public static void main(String[] args) {
int j = 0;
while (j < 3) {
System.out.println(j);
j++;
}
}
}
Toelichting: While is handig als het aantal herhalingen niet vaststaat en verandert op basis van runtime-waarden.
Voorbeeld 3 — Do-while (voert het blok minimaal één keer uit)
public class DoWhileDemo {
public static void main(String[] args) {
int k = 0;
do {
System.out.println(k);
k++;
} while (k < 3);
}
}
Voorbeeld 4 — Enhanced for (foreach) met array
public class ForEachArray {
public static void main(String[] args) {
int[] cijfers = {7, 8, 9};
for (int c : cijfers) {
System.out.println(c);
}
}
}
Voorbeeld 5 — break en continue
public class BreakContinueDemo {
public static void main(String[] args) {
for (int i = 0; i < 5; i++) {
if (i == 2) continue; // sla 2 over
if (i == 4) break; // stop bij 4
System.out.println(i);
}
}
}
Voorbeeld 6 — Geneste lussen en complexiteit
public class GenesteLussen {
public static void main(String[] args) {
for (int r = 1; r <= 3; r++) {
for (int c = 1; c <= 3; c++) {
System.out.print(r + "," + c + " ");
}
System.out.println();
}
}
}
Voorbeeld 7 — Oneindige lus met exit-voorwaarde
public class OneindigMetExit {
public static void main(String[] args) {
int i = 0;
while (true) {
if (i == 3) break;
System.out.println(i);
i++;
}
}
}
Voorbeeld 8 — Valstrik: wijzig niet de iterator in foreach
public class ForEachValstrik {
public static void main(String[] args) {
int[] arr = {1, 2, 3};
for (int v : arr) {
// v++ wijzigt NIET het arrayelement; v is een kopie
System.out.println(v);
}
}
}
Tips:
- Kies de lus die je intentie het best uitdrukt: foreach voor iteratie zonder index.
- Vermijd oneindige lussen tenzij je expliciet een stopconditie hebt.
- Werk aan leesbaarheid: vermijd te diepe geneste lussen; splits op in methoden.
Koppeling met oefeningen:
- Zie
java-workbook/src/chapter_8.mdvoor loop-oefeningen. - Uitwerkingen in
java-solutions/src/chapter_8.md.