CodeGym /Blog Java /Aleatoriu /Bucle imbricate Java
John Squirrels
Nivel
San Francisco

Bucle imbricate Java

Publicat în grup
Java, ca majoritatea altor limbaje de programare, acceptă bucle imbricate. Aceasta înseamnă doar o buclă într-o buclă. În acest articol, vom afla cum să lucrăm cu bucle imbricate în Java.

bucle imbricate Java

O buclă se numește imbricată dacă este plasată în interiorul unei alte bucle. La prima trecere, bucla exterioară apelează bucla interioară, care se desfășoară până la finalizare, după care controlul este transferat corpului buclei exterioare. La a doua trecere, bucla exterioară o cheamă din nou pe cea interioară. Și așa mai departe până când bucla exterioară se termină. Există patru tipuri de bucle în Java:
  • pentru buclă

  • buclă while

  • face...while bucla

  • pentru-fiecare buclă

Toate acceptă bucle imbricate. Construcțiile cu buclă imbricată sunt utilizate atunci când trebuie îndeplinite două condiții, una depinzând de cealaltă. De exemplu, dacă trebuie să afișați o matrice bidimensională, o semipiramidă sau o tabelă de înmulțire.

Cum funcționează buclele imbricate Java

Probabil cea mai folosită buclă în Java este for , în mare parte pentru că este destul de versatil și codul cu ea este destul de ușor de citit. Iată sintaxa generală pentru bucla for imbricată:

// outer loop
for (initialization; condition; increment) {
  //write here your code 

  //nested loop
  for(initialization; condition; increment) {
    //write here your code
  }
..
}
Cum lucrează? Bucla exterioară începe. Apoi bucla for imbricată începe lucrul și trece prin indexul său până când condiția este îndeplinită și trece din nou lucrarea buclei exterioare, iar acest lucru se întâmplă până când condiția buclei exterioare este îndeplinită. Sună puțin complicat, nu-i așa? Ei bine, va fi mult mai ușor de înțeles cu un exemplu specific, așa că să trecem la el.

Exemplu de cod imbricat pentru buclă

Iată un exemplu clasic. Să tipărim o jumătate de piramidă folosind două bucle for . Una dintre ele este imbricată.

public class NestedLoopsDemo1 {

   public static void main(String[] args) {

       for (int i = 0; i < 10; i++) {
           for (int j = 0; j<=i;  j++)
               System.out.print("*");
           System.out.println();
       }
      
   }
}
Ieșirea este:
* ** *** **** ***** ****** ******* ******** ********* ***** *****

Exemplu de cod while imbricat în buclă


public class NestedLoopsDemo2 {

   public static void main(String[] args) {

       int i = 0;
       while (i < 10) {
           int j = 0;
           while (j <= i) {
               System.out.print("*");
               j++;
           }
           System.out.println();
           i++;

       }
   }
}
Ieșirea este la fel ca în exemplul anterior:
* ** *** **** ***** ****** ******* ******** ********* ***** *****
Bucla do...while este similară cu bucla while . Principala diferență este că corpul buclei do...while este executat o dată înainte de verificarea expresiei.

Exemplu de cod de bucle imbricate foreach

for-each bucla poate fi imbricată ca de obicei bucla for . Iată exemplul pentru bucla imbricată for-each care repetă o matrice bidimensională.

public class NestedLoops2 {

       public static void main(String[] args)
       {
           int[][] mainArray = { {5, 4, 3, 2, 1}, {7, 8, 9, 10, 11} };

           for (int[] myArray : mainArray)
           {
               for (int i : myArray)
               {
                   System.out.print(i+" ");
               }
               System.out.println("");
           }
       }
}
Ieșirea este:
5 4 3 2 1 7 8 9 10 11

Exemplu de buclă mixtă for și while

Uneori putem cuibări diferite tipuri de bucle una în cealaltă. De exemplu, pentru interior timp sau pentru interior pentru fiecare . Cu toate acestea, nu este cea mai bună practică de programare. Astfel de construcții afectează semnificativ lizibilitatea codului. Așa că programatorii profesioniști încearcă să nu amestece unul cu celălalt. Ei bine, o fac, dar numai dacă este cu adevărat nevoie. Și încă o regulă mică: dacă alegi între timp și pentru , folosește pentru acolo unde este posibil. Cu toate acestea, aici vom avea un exemplu de utilizare a unei bucle for în interiorul while . Să ne construim din nou semipiramida.

public class NestedLoopsDemo2 {

   public static void main(String[] args) {
       int i = 0;
       while (i < 10) {
           for (int j = 0; j <= i; j++) {
               System.out.print("*");
           }
           System.out.println();
           i++;

       }
   }
}
Ieșirea este fără surprize:
* ** *** **** ***** ****** ******* ******** ********* ***** *****
Comentarii
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION