2015-10-10 1 views
0

Nous avons appris les boucles et les boucles imbriquées.Nested pour les boucles. Pourquoi la valeur de la variable interne est-elle réinitialisée?

Ma question;

Pourquoi est-ce que la valeur de la variable dans une boucle for interne se réinitialise une fois l'incrément terminé? Cependant, dans la boucle for externe, la variable conserve sa valeur.

Par exemple:

public class Factorial { 
    public static void main(String[] arguments){ 
    for(int i = 0; i <10; i++){ 
     for (int count=6; count < 18; count+=6){ 
      System.out.println (count); 
      } 
     } 
    } 
} 

Dans ce cas, le programme est exécuté 10 fois tandis que incrémenter incréments i et le nombre à 18 mais remonte à 6? chaque fois ... Quelqu'un pourrait-il expliquer pourquoi c'est?

Répondre

5

Les compteurs de boucles sont des variables locales, leur portée s'étend uniquement jusqu'à la structure dans laquelle ils sont créés. Dès que vous quittez une boucle, son compteur n'existe plus.

+0

Merci, c'est le genre de la réponse que je cherchais. Maintenant, je comprends beaucoup mieux. – AnthonyJ

1

Chaque fois que le code exécute la ligne contenant:

int count=6 

La variable de comptage remonte à 6.

Comme vous l'avez dit, la première boucle est exécutée 10 fois, donc compter sera réinitialisée quantité de fois que la première boucle s'exécute.

+0

est-il?, Il devrait donc faire la même pour 'for (int count = 6; count <18; count ++) {' –

+0

Suresh, quand nous sommes dans la boucle imbriquée en boucle, nous restons dans le même tour dans la boucle principale ... –

1

6 est réinitialisée dans la déclaration

for (int count=6; count < 18; count+=6){ 

Mais si vous déplaciez l'initialisation avant que la boucle

int count = 6; 
for (; count < 18; count+=6){ 

Il ferait la même chose.

Si vous le déplacez plus en arrière

int count = 6; 
for(int i = 0; i <10; i++){ 
    for (; count < 18; count+=6){ 
     System.out.println (count); 
     } 
    } 
} 

La boucle intérieure ne serait pas exécuter des itérations i = 1..9 parce que le nombre est déjà 18.