Algorithmique et langage Java

Tableaux multidimensionnels

Il est possible de créer des tableaux a plusieurs dimensions .
int[][][] boite=new int[3][4][2];
crée par exemple un tableau à trois dimensions 3 x 4 x 2. On accède à chacun de ses éléments par 3 indices : boite[0][2][1] par exemple.

Un tel tableau est considéré comme un "tableau de tableaux de tableaux " : Le tableau boite contient 3 tableaux boite[0], boite[1] et boite[2], qui contiennent chacun 4 tableaux : boite[0][0], boite[0][1].... , qui contiennent chacun 2 entiers.

Ainsi boite.length contient la valeur 3.
boite[0].length, boite[1].length et boite[2].length contiennnent tous la valeur 4.
boite[0][0].length et tous les champs similaires contient la valeur 2.

Le point important à retenir est qu'il faut faire attention à l'ordre dans lequel on écrit les indices quand on gère un tableau multidimensionnel.
Le premier indice référence la structure la plus externe, le dernier la structure la plus interne
Par exemple :
 
package initial;

public class Multidim {

	public static void main(String[] args) {
		ConsoleTexte mc=new ConsoleTexte();
		char [][] tableau2E={{'A','B','C'},{'D','E','F'},{'G','H','I'}};
		  mc.ecritln(tableau2E[0][2]);
		  mc.ecritln(tableau2E[2][0]);
		  for (int i=0;i<3;i=i+1){
			  for (int j=0;j<3;j=j+1){
				  mc.ecrit(tableau2E[i][j]);
				  }
			  }
		  mc.ecrit('\n'); 
			  for (int i=0;i<3;i=i+1){
			    for (int j=0;j<3;j=j+1){
				  mc.ecrit(tableau2E[j][i]);
				  }
			  }
	}

}
Dans cette exemple la commande mc.ecritln(tableau2E[0][2]); cherche dans le premier triplet (indice 0), le troisième élément (indice 2), et affiche donc la lettre C.

La commande mc.ecritln(tableau2E[2][0]); affiche le premier élément du troisième triplet , donc la lettre G.

Ensuite les deux séries de deux boucles imbriquées permettent chacune d'afficher tous les éléments mais dans un ordre différent.

Quand on n'a pas besoin d'un accès en écriture, les boucles for each peuvent donner un oode plus lisible. Il faut bien tenir compte du fait qu'un tableau multidimensionnel est en fait une imbrication de tableaux.
package initial;

public class Multidim {

	public static void main(String[] args) {
		ConsoleTexte mc=new ConsoleTexte();
		char [][] tableau2E={{'A','B','C'},{'D','E','F'},{'G','H','I'}};
		
		for (char[] sousTableau:tableau2E) { //sousTableau désignera successivement les trois sous-tableaux unidimensionnels de char contenus dans tableau2E 
			for (char element:sousTableau) { // element désignera successivement chacun des élément de sousTableau.
				mc.ecritln(element);
			}
		}
		 
	}

}
 
Licence Creative Commons
licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 non transposé
Auteur : Nathalie Bonnin
Professeur de Physique, Chimie, Informatique au lycée La Martinière Monplaisir (Lyon 8ème)
Contact :
nathalie.bonnin (chez) scientillula.net
Licence Creative Commons
La totalité du contenu du site Scientillula.net appartient à Nathalie Bonnin et est mise à disposition selon les termes de la licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 non transposé