Selles õpetuses õpime näidete abil Java sisseehitatud silmuseid.
Kui teise silmuse kehas on silmus, nimetatakse seda sisestatud silmuseks. Siin on näide pesastatud for
silmusest.
// outer loop for (int i = 1; i <= 5; ++i) ( // codes // inner loop for(int j = 1; j <=2; ++j) ( // codes )… )
Siin kasutame for
teise for
silmuse sees olevat silmust.
Pesastatud silmust saame kasutada iga nädala nädala kordamiseks 3 nädala jooksul.
Sellisel juhul saame kolm korda (3 nädalat) kordamiseks luua silmuse. Ja silmuse sees saame luua veel ühe silmuse 7 korda (7 päeva) kordamiseks.
Näide 1: Java on sisestatud silmuse jaoks
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); ) ) ) )
Väljund
Nädal: 1 päev: 1 päev: 2 päev: 3…. Nädal: 2 Päev: 1 Päev: 2 Päev: 3….….
Ülaltoodud näites kordub välissilmus 3 korda ja prinditakse 3 nädalat. Sisemine silmus kordub 7 korda ja prindib 7 päeva.
Saame luua ka pesastatud silmuseid funktsiooni while ja do… samasugusel viisil.
Märkus . Teise silmuse kere sees on võimalik kasutada ühte tüüpi silmuseid. Näiteks võime for
silmuse sisse panna while
silmuse.
Näide 2: Java silmus samal ajal silmus
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; ) ) )
Väljund :
Nädal: 1 päev: 1 päev: 2 päev: 3…. Nädal: 2 Päev: 1 Päev: 2 Päev: 3….….
Siin näete, et nii näite 1 kui ka näite 2 väljund on sama.
Näide 3: Java pesas silmuseid mustri loomiseks
Saame Java sisestatud silmuse abil luua selliseid mustreid nagu täispüramiid, poolpüramiid, tagurpidi püramiid jne.
Siin on programm püramiidmustri loomiseks pesastatud silmuste abil.
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(""); ) ) )
Väljund
1 1 2 1 2 3 1 2 3 4 1 2 3 4 5
Lisateabe saamiseks külastage püramiidi ja mustrite printimiseks Java-programmi.
murda ja jätkata sisemiste pesade aasasid
Kui kasutame break
avaldust sisemise silmuse sees, siis see lõpetab sisemise silmuse, kuid mitte välimise silmuse. Näiteks,
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); ) ) ) )
Väljund
Nädal: 1 päev: 1 päev: 2…. Nädal: 2 Nädal: 3 Päev: 1 Päev: 2….….
Ülaltoodud näites oleme kasutanud katkestuse lauset sisemise for
silmuse sees . Siin jätab programm silmuse vahele, kui i on 2 .
Seega 2. nädala päevi ei prindita. Nädalat trükkiv välimine silmus ei muutu.
Samamoodi continue
jätab see , kui kasutame avaldust sisemise silmuse sees, ainult sisemise silmuse praeguse iteratsiooni. Välimine silmus ei muutu. Näiteks,
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); ) ) ) )
Väljund
Nädal: 1 Päevad: 2 Päevad: 4 Päevad: 6 Nädal: 2 Päevad: 2 Päevad: 4 Päevad: 6 Nädal: 3 Päevad: 2 Päevad: 4 Päevad: 6
Ülaltoodud näites oleme kasutanud loopi sisemise jätkamise lauset. Pange tähele koodi,
if(j % 2 != 0) ( continue; )
Siin continue
täidetakse lause siis, kui j väärtus on paaritu. Seega prindib programm ainult neid päevi, mis on ühtlased.
Näeme, et continue
avaldus on mõjutanud ainult sisemist silmust. Välimine silmus töötab ilma probleemideta.