2017-10-11 4 views
-6

J'ai modifié l'exemple de code pour obtenir la sortie que je recherchais, mais je ne comprends pas la logique derrière les boucles for-imbriquées ci-dessous. Quelqu'un peut-il m'expliquer en détail ce que fait chaque boucle et pourquoi les boucles sont-elles construites de cette façon?Logique derrière l'impression de la forme de la pyramide à l'aide de boucles imbriquées en Java

public class Pyramid { 
    public static void main(String[] args) { 
     int size = 15; 

     for (int i = 1; i <= size; i += 2) { 

      for (int k = 0; k < (7 - i/2); k++) { 
       System.out.print(" "); 
      } 

      for (int j = 1; j <= i; j++) { 
       System.out.print("*"); 
      } 

      System.out.println(); 
     } 
    }  
} 

output (below): 

     * 
     *** 
    ***** 
    ******* 
    ********* 
    *********** 
************* 
*************** 
+1

Fixez votre indentation et ce sera beaucoup plus clair pour vous! Lorsque vous dessinez une pyramide, vous devez dessiner sur chaque ligne 'i'-th' 0 .. (N-i)/2' espaces suivis par les étoiles '1..i'. – vasek

+0

J'ai mis cette question à la baisse parce qu'il n'y a aucune preuve de recherche. S'il vous plaît [modifier] votre question pour inclure la recherche que vous avez faite et * précisément * lorsque vous avez des difficultés. Si vous pouvez le faire, je peux rétracter ma downvote. –

+0

Quelle partie de la boucle externe ne comprenez-vous pas? – Andreas

Répondre

0

Nested pour les boucles comme qui sont utilisés lorsque vous avez du code pseudo comme ceci:

Do the following x times: 
    Do the following y times: 
     some stuff 
    Do the following z times: 
     some stuff 

Dans votre cas, la taille de la pyramide est dynamique et est stockée dans une variable appelée size. Pour imprimer une pyramide, vous devez imprimer size fois la chose suivante:

  • Certains espaces et certains *

Comment imprimer alors? Vous calculez combien d'espaces blancs et * devrait-il y avoir et les imprimer. Comme les nombres d'espaces et * sont dynamiques, vous avez besoin d'une boucle for pour cela, au lieu de les coder en dur.

Voyez-vous la structure maintenant?

La boucle extérieure imprime chaque couche de la pyramide. La première boucle interne imprime les espaces blancs et la deuxième boucle interne imprime les *.