JAVA - for(type x : y)

Fermé
Maya - 1 août 2011 à 06:31
 Maya - 1 août 2011 à 21:02
Salut tout le monde,

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 :)
A voir également:

1 réponse

KX Messages postés 16754 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 020
Modifié par KX le 1/08/2011 à 21:07
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
0
Merci beaucoup, j'y vois plus clair maintenant :)
0