CodeGym /Java Blog /Random-IT /Cicli nidificati Java
John Squirrels
Livello 41
San Francisco

Cicli nidificati Java

Pubblicato nel gruppo Random-IT
Java, come la maggior parte degli altri linguaggi di programmazione, supporta i cicli nidificati. Questo significa solo un ciclo all'interno di un ciclo. In questo articolo, scopriremo come lavorare con i cicli nidificati in Java.

Cicli nidificati Java

Un ciclo è detto nidificato se è inserito all'interno di un altro ciclo. Al primo passaggio, il ciclo esterno chiama il ciclo interno, che viene eseguito fino al completamento, dopodiché il controllo viene trasferito al corpo del ciclo esterno. Al secondo passaggio, il ciclo esterno richiama di nuovo quello interno. E così via fino alla fine del ciclo esterno. Ci sono quattro tipi di loop in Java:
  • per ciclo

  • ciclo while

  • do... while loop

  • per ogni ciclo

Tutti supportano i cicli nidificati. I costrutti a ciclo annidato vengono utilizzati quando devono essere soddisfatte due condizioni, una dipendente dall'altra. Ad esempio, se è necessario visualizzare una matrice bidimensionale, una semipiramide o una tavola pitagorica.

Come funzionano i cicli nidificati Java

Probabilmente il ciclo più utilizzato in Java è for , in gran parte perché è abbastanza versatile e il codice con esso è abbastanza facile da leggere. Ecco la sintassi generale per il ciclo for nidificato :

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

  //nested loop
  for(initialization; condition; increment) {
    //write here your code
  }
..
}
Come lavora? Inizia il ciclo esterno. Quindi il ciclo for nidificato avvia il lavoro e passa attraverso il suo indice fino a quando la condizione non viene soddisfatta, quindi passa nuovamente il lavoro al ciclo esterno, e questo accade fino a quando la condizione del ciclo esterno non viene soddisfatta. Sembra un po' complicato, vero? Bene, sarà molto più facile da capire con un esempio specifico, quindi passiamo ad esso.

Esempio di codice di loop nidificato per

Ecco un classico esempio. Stampiamo una mezza piramide usando due cicli for . Uno di loro è annidato.

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();
       }
      
   }
}
L'uscita è:
* ** *** **** ***** ****** ******* ******** ********* ***** *****

Esempio di codice del ciclo while annidato


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++;

       }
   }
}
L'output è lo stesso dell'esempio precedente:
* ** *** **** ***** ****** ******* ******** ********* ***** *****
Il ciclo do...while è simile al ciclo while . La differenza principale è che il corpo del ciclo do...while viene eseguito una volta prima del controllo dell'espressione.

Esempio di codice di cicli foreach nidificati

Il ciclo for-each può essere nidificato come al solito per il ciclo for. Ecco l'esempio per il ciclo for-each nidificato che itera l'array bidimensionale.

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("");
           }
       }
}
L'uscita è:
5 4 3 2 1 7 8 9 10 11

Esempio di ciclo misto for e while

A volte possiamo nidificare diversi tipi di loop l'uno dentro l'altro. Ad esempio, for inside while o for inside for-each . Tuttavia, non è la migliore pratica di programmazione. Tali costrutti compromettono in modo significativo la leggibilità del codice. Quindi i programmatori professionisti cercano di non mescolare l'uno con l'altro. Sì, lo fanno, ma solo se è davvero necessario. E ancora una piccola regola: se stai scegliendo tra while e for , usa for dove possibile. Tuttavia, qui avremo un esempio di utilizzo di un ciclo for all'interno di while . Costruiamo di nuovo la nostra semipiramide.

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++;

       }
   }
}
L'output è senza sorprese:
* ** *** **** ***** ****** ******* ******** ********* ***** *****
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION