.. author:: Marie-Marie van der Beek, Pablo Gonzalez Alvarez
Un tableau multidimensionnel est un tableau avec au moins un autre tableau dedans. Par exemple, un tableau vide à 2 dimensions s'initialise comme ceci :
TYPE[][] nom = new TYPE[HAUTEUR][LARGEUR];
Un tableau à 2 dimensions est en fait un tableau dans lequel chaque case est un tableau. Ce qui donne le schéma suivant :
Outre les tableaux à une dimension, Java supporte également des tableaux à plusieurs dimensions. Laquelle des déclarations ci-dessous est-elle un tableau à plusieurs dimensions qui permet de stocker exactement 24 nombres entiers ?
int[][] t = new int[4][6];
Ce tableau à deux dimensions comprend 4 lignes et 6 colonnes.
int[][] t = new int[3][8];
Ce tableau à deux dimensions comprend 3 lignes et 8 colonnes.
int[][] t = new int[2][4];
Ce tableau à deux dimensions comprend 2 lignes et 4 colonnes.
int[][] t = new int[24];
Cette ligne est erronée. La référence déclarée à gauche est vers un tableau de tableaux alors que seul un tableau d'entiers est créé dans le membre de droite.
int[] t = new int[3][8];
Cette ligne est erronée. La référence déclarée à gauche est vers un tableau alors qu'un tableau de tableaux d'entiers est créé dans le membre de droite.
int[][] t = new int[2][4];
Le tableau créé a deux lignes et 4 colonnes. Il ne permet donc pas de stocker 24 nombres entiers.
Considérons un tableau à deux dimensions initialisé comme suit :
int[][] tab = { {1,2,3},
{4,5}
};
Laquelle des expressions booléennes ci-dessous est-elle vraie ?
(tab[0].length==3) && (tab[1][1]==5)
(tab.length==2) && (tab[0][2]==3)
(tab.length==1) && (tab[1][1]==4)
tab.length
est le nombre de lignes du tableautab
, c'est-à-dire2
.(tab[1].length==3) && (tab[0][1]==2)
tab[1].length
est le nombre de colonnes de la ligne1
du tableau, c'est-à-dire2
.(tab[0][2]==2) && (tab[1][0]==4)
L'élément
tab[0][2]
a comme valeur3
et non2
.
Considérons la matrice m
de li
lignes et c
colonnes qui a été initialisée par les instructions ci-dessous :
double m[][] = new double[li][c];
int count =1;
for(int i=0;i<li;i++) {
for(int j=0; j<c; j++) {
m[i][j]=count;
count++;
}
}
Laquelle des expressions booléennes ci-dessous est-elle vraie ?
( m[li-1][0]==((li-1)*c)+1) && (m[0][c-1]==c)
( m[0][0]==1) && (m[li-1][c-1]==1+li*ci)
( m[0][c-1]==c-1)
Cet élément de la matrice vaut
c
et carcount
est incrémentée à chaque passage dans la bouclefor j<c
.( m[li][c]==li*ci)
Il n'existe pas d'élément
m[li][c]
dans la matricem
.(m[0][0]==0) && (m[0][c-1]==c)
count
étant initialisé à1
, l'élémentm[0][0]
est initialisé à la valeur1
.( m[0][1]==1) && (m[0][c-1]==c)
m[0][1]
vaut2
.. author:: Marie-Marie van der Beek, Pablo Gonzalez Alvarez, Antoine Habran