JAVA - for(type x : y)
Maya
-
Maya -
Maya -
Salut tout le monde,
j'ai une petite question concernant cette syntaxe avec un tableau a deux dimensions.
Pour traduire cette imbrication :
j'arrive a ca:
mais si je veux traduire celle ci :
c'est possible ?
Merci d'avance :)
j'ai une petite question concernant cette syntaxe avec un tableau a deux dimensions.
Pour traduire cette imbrication :
for(int i = 0; i<tableau.length; i++) for(int j = 0; j<tableau[i].length; j++) System.out.println(tableau[i][j]);
j'arrive a ca:
for(int[] tab : tableau) for(int var : tab) System.out.println(var);
mais si je veux traduire celle ci :
for(int i = 0; i<tableau[0].length; i++) for(int j = 0; j<tableau.length; j++) System.out.println(tableau[j][i]);
c'est possible ?
Merci d'avance :)
1 réponse
-
Utilisée comme ça, la boucle for a le sens de for each (pour chaque), il faut donc comprendre que le traitement de la boucle est exhaustif, tous les éléments seront parcourus.
Ce que tu veux faire c'est court-circuiter une partie des valeurs, donc tu vas devoir garder ton premier for tel quel, le deuxième par contre ne pose pas de problème.
for(int i = 0; i<tableau[0].length; i++) for(int[] tab : tableau) System.out.println(tab[i]);
Il faut cependant faire attention, car cette boucle ne marche pas toujours !
Regarde par exemple ce que peux donner un tableau où il existe n tel que tableau[n].length est inférieur à tableau[0].length :
int[][] tableau = new int[2][]; tableau[0]=new int[3]; tableau[0][0]=4; tableau[0][1]=5; tableau[0][2]=6; tableau[1]=new int[2]; tableau[1][0]=7; tableau[1][1]=8; for(int[] tab : tableau) for(int var : tab) System.out.println(var); System.out.println(); for(int i = 0; i<tableau[0].length; i++) for(int[] tab : tableau) System.out.println(tab[i]);
La confiance n'exclut pas le contrôle