Geneste lus in Java (met voorbeelden)

In deze tutorial leren we aan de hand van voorbeelden over geneste loops in Java.

Als er een lus in de body van een andere lus bestaat, wordt dit een geneste lus genoemd. Hier is een voorbeeld van de geneste forlus.

 // outer loop for (int i = 1; i <= 5; ++i) ( // codes // inner loop for(int j = 1; j <=2; ++j) ( // codes )… )

Hier gebruiken we een forlus in een andere forlus.

We kunnen de geneste lus gebruiken om elke dag van een week gedurende 3 weken te herhalen.

In dit geval kunnen we een lus maken om drie keer (3 weken) te herhalen. En binnen de lus kunnen we nog een lus maken om 7 keer (7 dagen) te herhalen.

Voorbeeld 1: Java genest voor lus

 class Main ( public static void main(String() args) ( int weeks = 3; int days = 7; // outer loop prints weeks for (int i = 1; i <= weeks; ++i) ( System.out.println("Week: " + i); // inner loop prints days for (int j = 1; j <= days; ++j) ( System.out.println(" Day: " + j); ) ) ) )

Uitvoer

Week: 1 dag: 1 dag: 2 dagen: 3…. Week: 2 dagen: 1 dag: 2 dagen: 3….….

In het bovenstaande voorbeeld wordt de buitenste lus 3 keer herhaald en wordt er 3 weken afgedrukt. En de binnenste lus herhaalt zich 7 keer en drukt de 7 dagen af.

We kunnen ook geneste lussen maken met while en do … while op een vergelijkbare manier.

Opmerking : het is mogelijk om een ​​type lus in de body van een andere lus te gebruiken. We kunnen bijvoorbeeld een forlus in de whilelus plaatsen.

Voorbeeld 2: Java for-lus in de while-lus

 class Main ( public static void main(String() args) ( int weeks = 3; int days = 7; int i = 1; // outer loop while (i <= weeks) ( System.out.println("Week: " + i); // inner loop for (int j = 1; j <= days; ++j) ( System.out.println(" Days: " + j); ) ++i; ) ) )

Uitgang :

Week: 1 dag: 1 dag: 2 dagen: 3…. Week: 2 dagen: 1 dag: 2 dagen: 3….….

Hier kunt u zien dat de uitvoer van zowel Voorbeeld 1 als Voorbeeld 2 hetzelfde is.

Voorbeeld 3: Java geneste lussen om een ​​patroon te maken

We kunnen de geneste lus in Java gebruiken om patronen te maken zoals volledige piramide, halve piramide, omgekeerde piramide, enzovoort.

Hier is een programma om een ​​patroon van een halve piramide te maken met geneste lussen.

 class Main ( public static void main(String() args) ( int rows = 5; // outer loop for (int i = 1; i <= rows; ++i) ( // inner loop to print the numbers for (int j = 1; j <= i; ++j) ( System.out.print(j + " "); ) System.out.println(""); ) ) )

Uitvoer

 1 1 2 1 2 3 1 2 3 4 1 2 3 4 5

Ga voor meer informatie naar het Java-programma om piramides en patronen af ​​te drukken.

breek en ga verder met Inside Nested Loops

Wanneer we een breakstatement binnen de binnenste lus gebruiken, wordt de binnenste lus beëindigd, maar niet de buitenste lus. Bijvoorbeeld,

 class Main ( public static void main(String() args) ( int weeks = 3; int days = 7; // outer loop for(int i = 1; i <= weeks; ++i) ( System.out.println("Week: " + i); // inner loop for(int j = 1; j <= days; ++j) ( // break inside the inner loop if(i == 2) ( break; ) System.out.println(" Days: " + j); ) ) ) )

Uitvoer

Week: 1 dag: 1 dag: 2…. Week: 2 Week: 3 Dag: 1 Dag: 2….….

In het bovenstaande voorbeeld hebben we de break-instructie binnen de binnenste forlus gebruikt. Hier slaat het programma de lus over als i 2 is .

Daarom worden dagen voor week 2 niet afgedrukt. De buitenste lus die de week afdrukt, wordt echter niet beïnvloed.

Evenzo, wanneer we een continueinstructie binnen de binnenste lus gebruiken, wordt alleen de huidige iteratie van de binnenste lus overgeslagen. De buitenste lus wordt niet beïnvloed. Bijvoorbeeld,

 class Main ( public static void main(String() args) ( int weeks = 3; int days = 7; // outer loop for(int i = 1; i <= weeks; ++i) ( System.out.println("Week: " + i); // inner loop for(int j = 1; j <= days; ++j) ( // continue inside the inner loop if(j % 2 != 0) ( continue; ) System.out.println(" Days: " + j); ) ) ) )

Uitvoer

 Week: 1 dagen: 2 dagen: 4 dagen: 6 Week: 2 dagen: 2 dagen: 4 dagen: 6 Week: 3 dagen: 2 dagen: 4 dagen: 6

In het bovenstaande voorbeeld hebben we de instructie continue in de inner for-lus gebruikt. Let op de code,

 if(j % 2 != 0) ( continue; )

Hier wordt de continueinstructie uitgevoerd als de waarde van j oneven is. Daarom drukt het programma alleen die dagen af ​​die even zijn.

We kunnen zien dat de continueverklaring alleen de binnenste lus heeft beïnvloed. De buitenste lus werkt probleemloos.

Interessante artikelen...