Les tableaux en Java

Page 1 sur 9Lecteur de document UniversityLib

Les tableaux en Java

Programming (Java) · course

Voir tous les documents en programmation

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

PDF

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