Simple exemple de boucle for imbriquée
Actuellement, je suis des études pour mon Java de test. Whist études j'ai rencontré un petit problème.
Dans cette boucle for:
for ( int i=1; i <= 3 ; i++ ) {
for (int j=1; j <= 3 ; j++ ) {
System.out.println( i + " " + j );
}
}
La sortie est:
1 1
1 2
1 3
2 1
2 2
2 3
3 1
3 2
3 3
Mon problème est que je ne comprends pas. Quand j'ai lu ce code je continue à penser qu'il devrait ressembler à ceci:
1 1
2 2
3 3
Pourquoi ce n'est pas le cas?
OriginalL'auteur | 2009-03-18
Vous devez vous connecter pour publier un commentaire.
Chaque itération de je, vous êtes à partir d'une complètement nouvelle itération de j.
Donc, vous commencez avec i==1, j==1,2,3 dans une boucle. Alors i==2, j==1,2,3 dans une boucle, etc.
Étape à travers elle une étape à la fois, et il va donner un sens.
Content d'avoir pu aider 🙂
OriginalL'auteur Reed Copsey
Ce que vous avez est une boucle à l'intérieur de l'autre. Pensez-y comme l'aiguille des minutes et l'aiguille des heures sur une horloge. L'aiguille des minutes, aller autour (1,2,3,4...59), tandis que l'aiguille des heures est toujours à 1. Donc, si nous traitons des heures comme je l'ai, et à quelques minutes de j, on a:
1 1
1 2
1 3
...
1 60
Et puis les heures de changement de 2, et l'aiguille des minutes continue autour de:
2 1
2 2
2 3
...
2 60
Et nous terminons lorsque nous arriverons à la
12 1
12 2
12 3
...
12 60
qui est l'endroit où la boucle se termine. Votre exemple est un peu comme cela.
(Pour le pédant, je sais c'est nul, mais pour illustrer, cela peut être plus facile à comprendre)
Ouais, c'est pourquoi j'ai utilisé de base 1, parce que le demandeur ne peut pas saisir de 0 basée sur des boucles.
C'était vraiment bien pensé exemple. Merci pour l'aide.
OriginalL'auteur Smashery
Regardons ce que cela ressemblerait si nous avons changé de boucles de code à répétition. D'abord la boucle externe:
Maintenant la boucle intérieure:
- T-elle un sens aujourd'hui?
OriginalL'auteur Michael Myers
L'extérieur pour "attrape" l'intérieur pour et itère sur ELLE.
c'est à dire, vous avez une boucle dans une boucle for. Pour chaque i dans l'intervalle 1..3, vous devez la boucle j à partir de 1..3 aussi. Comme je devient 2, j est réinitialisé à 1 et la boucle s'exécute une fois de plus.
OriginalL'auteur Stefan Kendall
Vous avez une boucle dans une autre boucle.
Ainsi, pour chaque itération de la boucle externe, vous exécutez l'intérieur de la boucle à la fin, en commençant à 1 qui se termine à 3.
Donc, vous vous retrouvez impression j=1,2,3, pour chaque valeur de i. Dans ce cas, je est 1, 2, et 3.
OriginalL'auteur Alan
Pour chaque itération de la boucle externe, complète intérieure de la boucle est exécuté.
Par exemple, lorsque i= 1, la boucle interne va exécuter 3 fois et vous obtiendrez
1 1
1 2
1 3
OriginalL'auteur Upul Bandara
Chaque fois que vous nid de boucles (c'est ce qu'il est appelé lorsque vous mettez l'un à l'intérieur de l'autre), il ajoute une autre "dimension". Si vous avez un seul pour la boucle, c'est comme une ligne droite. Donc, si notre première boucle est de 1 à 5, ce serait:
1 2 3 4 5
Si vous ajoutez une deuxième boucle, (disons de 1 à 3) (Vous avez bien lu de haut en bas de gauche à droite, le premier nombre représente la première variable, etc)
11 21 31 41 51
12 22 32 42 52
13 23 33 43 53
Et si vous ajoutez une troisième boucle (disons 1-2) (évidemment je ne peux pas faire 3 dimensions ici, alors restez avec moi)
111 211 311 411 511 || 112 212 312 412 512
121 221 321 421 521 || 122 222 322 422 522
131 231 331 431 531 || 132 232 332 432 532
Ainsi, le nombre total d'itérations (combien de fois vous allez par le biais de la boucle) est le produit de la boucle. Celui-ci est un 3 * 5 * 2, donc il va se répéter 30 fois.
OriginalL'auteur Retsam