Tässä opetusohjelmassa opitaan Java: n sisäkkäisistä silmukoista esimerkkien avulla.
Jos toisen silmukan rungossa on silmukka, sitä kutsutaan sisäkkäiseksi silmukaksi. Tässä on esimerkki sisäkkäisestä for
silmukasta.
// outer loop for (int i = 1; i <= 5; ++i) ( // codes // inner loop for(int j = 1; j <=2; ++j) ( // codes )… )
Tässä käytämme for
silmukkaa toisen for
silmukan sisällä .
Voimme käyttää sisäkkäistä silmukkaa iteroimaan läpi viikon jokaisen päivän 3 viikon ajan.
Tässä tapauksessa voimme luoda silmukan iteroimaan kolme kertaa (3 viikkoa). Ja silmukan sisällä voimme luoda toisen silmukan iteroimaan 7 kertaa (7 päivää).
Esimerkki 1: Java on sisäkkäin silmukalle
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); ) ) ) )
Tuotos
Viikko: 1 päivä: 1 päivä: 2 päivä: 3…. Viikko: 2 Päivä: 1 Päivä: 2 Päivä: 3….….
Yllä olevassa esimerkissä ulompi silmukka toistuu 3 kertaa ja tulostaa 3 viikkoa. Sisäinen silmukka toistaa 7 kertaa ja tulostaa 7 päivää.
Voimme myös luoda sisäkkäisiä silmukoita while ja do… samalla tavalla.
Huomaa : On mahdollista käyttää yhden tyyppistä silmukkaa toisen silmukan rungossa. Esimerkiksi voimme laittaa for
silmukan silmukan sisään while
.
Esimerkki 2: Java silmukalle while-silmukan sisällä
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; ) ) )
Tuotos :
Viikko: 1 päivä: 1 päivä: 2 päivä: 3…. Viikko: 2 Päivä: 1 Päivä: 2 Päivä: 3….….
Täältä näet, että sekä esimerkin 1 että esimerkin 2 tulos on sama.
Esimerkki 3: Java sisäkkäiset silmukat kuvion luomiseksi
Voimme käyttää Java: n sisäkkäistä silmukkaa kuvioiden luomiseen, kuten täydellinen pyramidi, puolipyramidi, käänteinen pyramidi ja niin edelleen.
Tässä on ohjelma, jolla luodaan puolipyramidikuvio sisäkkäisten silmukoiden avulla.
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(""); ) ) )
Tuotos
1 1 2 1 2 3 1 2 3 4 1 2 3 4 5
Saat lisätietoja käymällä Java-ohjelmassa tulostaaksesi pyramidin ja kuviot.
katkaise ja jatka sisäkkäisiä silmukoita
Kun käytämme break
lausetta sisäisen silmukan sisällä, se päättää sisäisen silmukan, mutta ei ulompaa silmukkaa. Esimerkiksi,
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); ) ) ) )
Tuotos
Viikko: 1 Päivä: 1 Päivä: 2…. Viikko: 2 Viikko: 3 Päivä: 1 Päivä: 2….….
Yllä olevassa esimerkissä olemme käyttäneet katkaisulausetta sisäisen for
silmukan sisällä . Tässä ohitetaan silmukka, kun i on 2 .
Siksi viikon 2 päiviä ei tulosteta. Viikkoa tulostava ulompi silmukka ei kuitenkaan muutu.
Vastaavasti, kun käytämme continue
lausetta sisäisen silmukan sisällä, se ohittaa vain sisemmän silmukan nykyisen iteraation. Ulompaan silmukkaan ei vaikuteta. Esimerkiksi,
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); ) ) ) )
Tuotos
Viikko: 1 päivä: 2 päivää: 4 päivää: 6 viikko: 2 päivää: 2 päivää: 4 päivää: 6 viikko: 3 päivää: 2 päivää: 4 päivää: 6
Yllä olevassa esimerkissä olemme käyttäneet jatko-lausetta sisäisen silmukan sisällä. Huomaa koodi,
if(j % 2 != 0) ( continue; )
Tässä continue
lauseke suoritetaan, kun j: n arvo on pariton. Siksi ohjelma tulostaa vain tasaiset päivät.
Voimme nähdä, että continue
lausunto on vaikuttanut vain sisäiseen silmukkaan. Ulompi silmukka toimii ongelmitta.