V tej vadnici bomo s pomočjo primerov spoznali ugnezdene zanke v Javi.
Če zanka obstaja znotraj telesa druge zanke, se imenuje ugnezdena zanka. Tu je primer ugnezdene for
zanke.
// outer loop for (int i = 1; i <= 5; ++i) ( // codes // inner loop for(int j = 1; j <=2; ++j) ( // codes )… )
Tu uporabljamo for
zanko znotraj druge for
zanke.
Vgnezdeno zanko lahko 3 tedne ponavljamo vsak dan v tednu.
V tem primeru lahko ustvarimo zanko za ponovitev trikrat (3 tedne). In znotraj zanke lahko ustvarimo še eno zanko, ki se ponovi 7-krat (7 dni).
Primer 1: Java, ugnezdena za zanko
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); ) ) ) )
Izhod
Teden: 1 dan: 1 dan: 2 dan: 3…. Teden: 2 dan: 1 dan: 2 dan: 3….….
V zgornjem primeru se zunanja zanka ponovi 3-krat in natisne 3 tedne. Notranja zanka se ponovi 7-krat in izpiše 7 dni.
Ugnezdene zanke lahko ustvarimo tudi z while in na podoben način naredimo … medtem ko.
Opomba : Mogoče je uporabiti eno vrsto zanke znotraj telesa druge zanke. Na primer, lahko v for
zanko vstavimo while
zanko.
Primer 2: Java for zanka znotraj zanke while
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; ) ) )
Izhod :
Teden: 1 dan: 1 dan: 2 dan: 3…. Teden: 2 dan: 1 dan: 2 dan: 3….….
Tu lahko vidite, da je rezultat tako primera 1 kot primera 2 enak.
Primer 3: Vgnezdene zanke Java za ustvarjanje vzorca
Vgnezdeno zanko v Javi lahko uporabimo za ustvarjanje vzorcev, kot so polna piramida, polpiramida, obrnjena piramida itd.
Tukaj je program za ustvarjanje pol piramidnega vzorca z uporabo ugnezdenih zank.
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(""); ) ) )
Izhod
1 1 2 1 2 3 1 2 3 4 1 2 3 4 5
Če želite izvedeti več, obiščite program Java za tiskanje piramid in vzorcev.
prekinite in nadaljujte znotraj gnezdenih zank
Ko uporabimo break
stavek znotraj notranje zanke, ta zaključi notranjo zanko, ne pa tudi zunanjo zanko. Na primer
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); ) ) ) )
Izhod
Teden: 1 dan: 1 dan: 2…. Teden: 2 Teden: 3 Dan: 1 Dan: 2….….
V zgornjem primeru smo uporabili izjavo break znotraj notranje for
zanke. Tu program preskoči zanko, ko je i 2 .
Dnevi za 2. teden se torej ne natisnejo. Vendar zunanja zanka, ki tiska teden, ni prizadeta.
Podobno, ko uporabimo continue
stavek znotraj notranje zanke, preskoči trenutno ponovitev samo notranje zanke. Zunanja zanka ni prizadeta. Na primer
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); ) ) ) )
Izhod
Teden: 1 dnevi: 2 dnevi: 4 dnevi: 6 teden: 2 dnevi: 2 dnevi: 4 dnevi: 6 teden: 3 dnevi: 2 dnevi: 4 dnevi: 6
V zgornjem primeru smo uporabili stavek continue znotraj notranje zanke for. Upoštevajte kodo,
if(j % 2 != 0) ( continue; )
Tu se continue
stavek izvede, kadar je vrednost j neparna. Zato program tiska samo tiste dneve, ki so enakomerni.
Vidimo lahko, da je continue
izjava vplivala samo na notranjo zanko. Zunanja zanka deluje brez težav.