18/11/2015
Les tableaux
Accueil
Cours
Apprenez programmer en Java
Les tableaux
Apprenez programmer en Java
2 < @ ?
Z
40 heures
& Difficile
Licence
LES TABLEAUX
% $
-
Comme tout langage de programmation qui se respecte, Java travaille avec des tableaux. Vous verrez que ceux-ci
s'av rent bien pratiques.
Vous vous doutez (je suppose) que les tableaux dont nous parlons n'ont pas grand-chose voir avec ceux que vous
connaissez ! En programmation, un tableau n'est rien d'autre qu'une variable un peu particuli re. Nous allons en effet
pouvoir lui affecter plusieurs valeurs ordonn es s quentiellement que nous pourrons appeler au moyen d'un indice
(ou d'un compteur, si vous pr f rez). Il nous suffira d'introduire l'emplacement du contenu d sir dans notre variable
tableau pour la sortir, travailler avec, l'afficher&
Assez bavard : mettons-nous joyeusement au travail !
Tableau une dimension
T
Je viens de vous expliquer grosso modo ce qu'est un tableau en programmation. Si maintenant, je vous disais qu'il y a
autant de types de tableaux que de types de variables ? Je crois voir quelques gouttes de sueur perler sur vos fronts&
Pas de panique ! C'est tr s logique : comme nous l'avons vu auparavant, une variable d'un type donn ne peut
contenir que des l ments de ce type : une variable de type int ne peut pas recevoir une cha ne de caract res. Il en
va de m me pour les tableaux. Voyons tout de suite comment ils se d clarent :
java
1
<type du tableau> <nom du tableau> [] = { <contenu du tableau>};
La d claration ressemble beaucoup celle d'une variable quelconque, si ce n'est la pr sence de crochets [ ] apr s le
nom de notre tableau et d'accolades { } encadrant l'initialisation de celui-ci. Dans la pratique, a nous donnerait
quelque chose comme ceci :
https://openclassrooms.com/courses/apprenez a programmer en java/les tableaux 3#_=_
java
1/9
18/11/2015
Les tableaux
1
2
3
4
int tableauEntier[] = {0,1,2,3,4,5,6,7,8,9};
double tableauDouble[] = {0.0,1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0};
char tableauCaractere[] = {'a','b','c','d','e','f','g'};
String tableauChaine[] = {"chaine1", "chaine2", "chaine3" , "chaine4"};
Vous remarquez bien que la d claration et l'initialisation d'un tableau se font comme avec une variable ordinaire : il
faut utiliser des ' ' pour initialiser un tableau de caract res, des " " pour initialiser un tableau de
String , etc. Vous pouvez aussi d clarer un tableau vide, mais celui-ci devra imp rativement contenir un nombre de
cases bien d fini. Par exemple, si vous voulez un tableau vide de six entiers :
java
1
2
3
int tableauEntier[] = new int[6];
//Ou encore
int[] tableauEntier2 = new int[6];
Cette op ration est tr s simple, car vraiment ressemblante ce que vous faisiez avec vos variables ; je vous propose
donc tout de suite de nous pencher sur une belle variante de ces tableaux&
Les tableaux multidimensionnels
T
Ici, les choses se compliquent un peu, car un tableau multidimensionnel n'est rien d'autre qu'un tableau contenant au
minimum deux tableaux& Je me doute bien que cette notion doit en effrayer plus d'un, mais en r alit , elle n'est pas
si difficile que a appr hender. Comme tout ce que je vous apprends en g n ral !
Je ne vais pas vous faire de grand la us sur ce type de tableau, puisque je pense sinc rement qu'un exemple vous en
fera beaucoup mieux comprendre le concept. Imaginez un tableau avec deux lignes : la premi re contiendra les
premiers nombres pairs, et le deuxi me contiendra les premiers nombres impairs.
Ce tableau s'appellera premiersNombres . Voil ce que cela donnerait :
1
int premiersNombres[][] = { {0,2,4,6,8},{1,3,5,7,9} };
java
Nous voyons bien ici les deux lignes de notre tableau symbolis es par les doubles crochets [ ][ ] . Et comme je l'ai
dit plus haut, ce genre de tableau est compos de plusieurs tableaux. Ainsi, pour passer d'une ligne l'autre, nous
jouerons avec la valeur du premier crochet. Exemple : premiersNombres[0][0] correspondra au premier l ment
de la ligne paire, et premiersNombres[1][0] correspondra au premier l ment de la ligne impaire.
La figure suivante repr sente un petit sch ma en guise de synth se.
Comprendre un tableau bidimensionnel
Maintenant, je vais vous proposer de vous amuser un peu avec les tableaux&
Utiliser et rechercher dans un tableau
https://openclassrooms.com/courses/apprenez a programmer en java/les tableaux 3#_=_
Publicité
T
2/9
18/11/2015
Les tableaux
Avant d'attaquer, je dois vous dire quelque chose de primordial : un tableau d bute toujours l'indice 0 ! Je
m'explique : prenons l'exemple du tableau de caract res contenant les lettres de l'alphabet dans l'ordre qui a t
donn plus haut. Si vous voulez afficher la lettre a l' cran, vous devrez taper cette ligne de code :
java
1
System.out.println(tableauCaractere[0]);
Cela implique qu'un tableau contenant 4 l ments aura comme indices possibles 0, 1, 2 ou 3. Le 0 correspond au
premier l ment, le 1 correspond au 2e l ment, le 2 correspond au 3e l ment et le 3 correspond au 4e l ment.
Une tr s grande partie des erreurs sur les tableaux sont dues un mauvais indice dans celui-ci. Donc prenez
garde !
Ce que je vous propose, c'est tout simplement d'afficher un des tableaux pr sent s ci-dessus dans son int gralit .
Sachez qu'il existe une instruction qui retourne la taille d'un tableau : gr ce elle, nous pourrons arr ter notre boucle
(car oui, nous allons utiliser une boucle). Il s'agit de l'instruction <mon tableau>.length . Notre boucle for
pourrait donc ressembler ceci :
java
1
2
3
4
5
6
char tableauCaractere[] = {'a','b','c','d','e','f','g'};
for(int i = 0; i < tableauCaractere.length; i++)
{
System.out.println(" l'emplacement " + i +" du tableau nous avons = " + tableauCaractere );
}
Cela affichera :
l'emplacement 0 du tableau nous avons = a
l'emplacement 1 du tableau nous avons = b
l'emplacement 2 du tableau nous avons = c
l'emplacement 3 du tableau nous avons = d
l'emplacement 4 du tableau nous avons = e
l'emplacement 5 du tableau nous avons = f
l'emplacement 6 du tableau nous avons = g
Maintenant, nous allons essayer de faire une recherche dans un de ces tableaux. En gros, il va falloir effectuer une
saisie clavier et regarder si celle-ci est pr sente dans le tableau& Gardez la partie de code permettant de faire
plusieurs fois la m me action ; ensuite, faites une boucle de recherche incluant la saisie clavier, un message si la saisie
est trouv e dans le tableau, et un autre message si celle-ci n'est pas trouv e. Ce qui nous donne :
java
1
2
3
4
5
6
7
8
9
char tableauCaractere[] = {'a', 'b', 'c', 'd', 'e', 'f', 'g'};
int i = 0;
char reponse = ' ',carac = ' ';
Scanner sc = new Scanner(System.in);
do {//Boucle principale
do {//On r p te cette boucle tant que l'utilisateur n'a pas rentr une lettre figurant dans le
tableau
i = 0;
System.out.println("Rentrez une lettre en minuscule, SVP ");
https://openclassrooms.com/courses/apprenez a programmer en java/les tableaux 3#_=_
3/9
18/11/2015
Les tableaux
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Publicité
29
30
31
carac = sc.nextLine().charAt(0);
//Boucle de recherche dans le tableau
while(i < tableauCaractere.length && carac != tableauCaractere )
i++;
//Si i < 7 c'est que la boucle n'a pas d pass le nombre de cases du tableau
if (i < tableauCaractere.length)
System.out.println(" La lettre " +carac+ " se trouve bien dans le tableau !");
else //Sinon
System.out.println(" La lettre " +carac+ " ne se trouve pas dans le tableau !");
}while(i >= tableauCaractere.length);
//Tant que la lettre de l'utilisateur ne correspond pas une lettre du tableau
do{
System.out.println("Voulezvous essayer nouveau ? (O/N)");
reponse = sc.nextLine().charAt(0);
}while(reponse != 'N' && reponse != 'O');
}while (reponse == 'O');
System.out.println("Au revoir !");
Le r sultat de ce code se trouve la figure suivante.
R sultat de la recherche
Explications sur la recherche
Dans notre while , il y a deux conditions.
La premi re correspond au compteur : tant que celui-ci est inf rieur ou gal au nombre d' l ments du tableau, on
l'incr mente pour regarder la valeur suivante. Nous passons ainsi en revue tout ce qui se trouve dans notre tableau. Si
https://openclassrooms.com/courses/apprenez a programmer en java/les tableaux 3#_=_
4/9
18/11/2015
Les tableaux
nous n'avions mis que cette condition, la boucle n'aurait fait que parcourir le tableau, sans voir si le caract re saisi
correspond bien un caract re de notre tableau, d'o la deuxi me condition.
La deuxi me correspond la comparaison entre le caract re saisi et la recherche dans le tableau. Gr ce elle, si le
caract re saisi se trouve dans le tableau, la boucle prend fin, et donc i a une valeur inf rieure 7.
ce stade, notre recherche est termin e. Apr s cela, les conditions coulent de source ! Si nous avons trouv une
correspondance entre le caract re saisi et notre tableau, i prendra une valeur inf rieure 7 (vu qu'il y a 7 l ments
dans notre tableau, l'indice maximum tant 7-1, soit 6). Dans ce cas, nous affichons un message confirmant la
pr sence de l l ment recherch . Dans le cas contraire, c'est l'instruction du else qui s'ex cutera.
Vous avez d remarquer la pr sence d'un i = 0; dans une boucle. Ceci est primordial, sinon, lorsque vous
reviendrez au d but de celle-ci, i ne vaudra plus 0, mais la derni re valeur laquelle il aura t affect apr s
les diff rentes incr mentations. Si vous faites une nouvelle recherche, vous commencerez par l'indice contenu
dans i ; ce que vous ne voulez pas, puisque le but est de parcourir l'int gralit du tableau, donc depuis
lindice 0.
En travaillant avec les tableaux, vous serez confront s, un jour ou l'autre, au message suivant :
console
java.lang.ArrayIndexOutOfBoundsException
Ceci signifie qu'une erreur a t rencontr e, car vous avez essay de lire (ou d' crire dans) une case qui n'a pas t
d finie dans votre tableau ! Voici un exemple (nous verrons les exceptions lorsque nous aborderons la programmation
orient e objet) :
java
1
2
3
4
5
String[] str = new String[10];
//L'instruction suivante va d clencher une exception
//Car vous essayez d' crire la case 11 de votre tableau
//Alors que celuici n'en contient que 10 ( a commence 0 !)
str[10] = "Une exception";
Nous allons maintenant travailler sur le tableau bidimensionnel mentionn pr c demment. Le principe est vraiment
identique celui d'un tableau simple, sauf qu'ici, il y a deux compteurs. Nous allons travailler sur un code permettant
d'afficher les donn es par ligne, c'est- -dire l'int gralit du sous-tableau de nombres pairs, puis le sous-tableau de
nombres impairs.
Avec une boucle while
int premiersNombres[][] = { {0,2,4,6,8},{1,3,5,7,9} }, i = 0, j = 0;
java
while (i < 2)
{
j = 0;
while(j < 5)
{
System.out.print(premiersNombres );
j++;
}
System.out.println("");
i++;
1
2
3
4
5
6
7
Publicité
8
9
10
11
12
https://openclassrooms.com/courses/apprenez a programmer en java/les tableaux 3#_=_
5/9
18/11/2015
13
}
Le r sultat se trouve la figure suivante.
Les tableaux
Affichage du tableau
D taillons un peu ce code :
Dans un premier temps, on initialise les variables.
On entre ensuite dans la premi re boucle (qui s'ex cutera deux fois, donc i vaut 0 la premi re fois, et vaudra
1 pendant la deuxi me), et on initialise j 0.
On entre ensuite dans la deuxi me boucle, o j vaudra successivement 0, 1, 2, 3 et 4 pour afficher le contenu
du tableau d'indice 0 (notre premier i ).
On sort de cette boucle ; notre i est ensuite incr ment et passe 1.
On reprend le d but de la premi re boucle : initialisation de j 0.
On entre nouveau dans la deuxi me boucle, o le processus est le m me que pr c demment (mais l , i
vaut 1).
Enfin, nous sortons des boucles et le programme termine son ex cution.
Le m me r sultat avec une boucle for
1
2
3
4
5
6
7
8
9
10
int premiersNombres[][] = { {0,2,4,6,8},{1,3,5,7,9} };
for(int i = 0; i < 2; i++)
{
for(int j = 0; j < 5; j++)
{
System.out.print(premiersNombres );
}
System.out.println("");
}
Je vous avais parl d'une nouvelle syntaxe pour cette boucle, la voici :
1
2
3
4
String tab[] = {"toto", "titi", "tutu", "tete", "tata"};
for(String str : tab)
System.out.println(str);
https://openclassrooms.com/courses/apprenez a programmer en java/les tableaux 3#_=_
java
java
6/9
18/11/2015
Les tableaux
Ceci signifie qu' chaque tour de boucle, la valeur courante du tableau est mise dans la variable str . Vous
constaterez que cette forme de boucle for est particuli rement adapt e aux parcours de tableaux !
Attention cependant, il faut imp rativement que la variable pass e en premier param tre de la boucle for soit de
m me type que la valeur de retour du tableau (une variable de type String pour un tableau de String , un int
pour un tableau d' int etc.).
Concernant les tableaux deux dimensions, que va retourner l'instruction de la premi re boucle for ? Un tableau !
Nous devrons donc faire une deuxi me boucle afin de parcourir ce dernier !
Voici un code qui permet d'afficher un tableau deux dimensions de fa on conventionnelle et selon la version du JDK
1.5 (cette syntaxe ne fonctionnera pas sur les versions ant rieures au JDK 1.5) :
java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
String tab[][]={{"toto", "titi", "tutu", "tete", "tata"}, {"1", "2", "3", "4"}};
int i = 0, j = 0;
for(String sousTab[] : tab)
Publicité
{
i = 0;
for(String str : sousTab)
{
System.out.println("La valeur de la nouvelle boucle est : " + str);
System.out.println("La valeur du tableau l'indice ["+j+"]["+i+"] est : " + tab );
i++;
}
j++;
}
Je vous laisse le soin d'essayer ce code. Vous pourrez voir que nous r cup rons un tableau au cours de la premi re
boucle et parcourons ce m me tableau afin de r cup rer les valeurs de celui-ci dans la deuxi me. Simple, non ? En
tout cas, je pr f re nettement cette syntaxe ! Apr s, c'est vous de voir&
Un tableau est une variable contenant plusieurs donn es d'un m me type.
Pour d clarer un tableau, il faut ajouter des crochets [ ] la variable ou son type de d claration.
Vous pouvez ajouter autant de dimensions votre tableau que vous le souhaitez, ceci en cumulant des crochets
la d claration.
Le premier l ment d'un tableau est l' l ment 0.
Vous pouvez utiliser la syntaxe du JDK 1.5 de la boucle for pour parcourir vos tableaux : for(String str
: monTableauDeString) .
9
J'ai termin ce chapitre et je passe au suivant
S
TP : conversion Celsius - Fahrenheit
Les m thodes de classe
https://openclassrooms.com/courses/apprenez a programmer en java/les tableaux 3#_=_
T
7/9
18/11/2015
Les tableaux
S'inscrire au cours
Comment a marche ?
S
Bien commencer en Java
T
1. Installer les outils de d veloppement
2. Les variables et les op rateurs
3. Lire les entr es clavier
4. Les conditions
5. Les boucles
6. TP : conversion Celsius - Fahrenheit
7. Les tableaux
8. Les m thodes de classe
Quiz
Acc der au forum
Cr par
OpenClassrooms, 1 re plateforme
e-Education en Europe
$
L'auteur
Cyrille Herby
Sp cialiste en d veloppement Java et curieux insatiable dinformatique et de programmation web.
Actuellement auditeur en s curit .
D couvrez aussi ce cours en...
https://openclassrooms.com/courses/apprenez a programmer en java/les tableaux 3#_=_
8/9
18/11/2015
Les tableaux
@ < @
Premium
Premium
eBook
Livre papier
OpenClassrooms
Professionnels
Participez
Qui sommes-nous ?
Affiliation
Cr er un cours
Fonctionnement de nos cours
Entreprises
CourseLab
Recrutement
Nous contacter
Suivez-nous
Le blog OpenClassrooms
Universit s et coles
Aider traduire
Conditions G n rales d'Utilisation
$ 6 ;
https://openclassrooms.com/courses/apprenez a programmer en java/les tableaux 3#_=_
9/9