Aller au contenu principal

Les tableaux

Notions théoriques

Qu'est-ce qu'un tableau ?

Un tableau (array) est une structure qui permet de stocker plusieurs valeurs du même type dans une seule variable. Les éléments sont accessibles par leur indice (index), qui commence à 0.

Déclarer et créer un tableau

Il existe deux façons de créer un tableau :

Avec une taille fixe :

int[] notes = new int[5]; // tableau de 5 entiers, initialisés à 0

Avec des valeurs initiales :

int[] notes = {10, 14, 12, 18, 9};
String[] prenoms = {"Alice", "Bob", "Charlie"};

Accéder aux éléments

int[] notes = {10, 14, 12, 18, 9};

System.out.println(notes[0]); // 10 (premier élément)
System.out.println(notes[4]); // 9 (cinquième et dernier élément)

// Modifier un élément
notes[2] = 15;
Indice hors limites

Si vous accédez à un indice qui n'existe pas (ex : notes[5] sur un tableau de 5 éléments), Java lève une ArrayIndexOutOfBoundsException. L'indice maximal est toujours longueur - 1.

La propriété length

Pour connaître la taille d'un tableau, utilisez .length (sans parenthèses) :

int[] notes = {10, 14, 12, 18, 9};
System.out.println("Nombre de notes : " + notes.length); // 5

Parcourir un tableau

Avec une boucle for classique :

int[] notes = {10, 14, 12, 18, 9};
for (int i = 0; i < notes.length; i++) {
System.out.println("notes[" + i + "] = " + notes[i]);
}

Avec une boucle for-each :

for (int note : notes) {
System.out.println(note);
}

Tableaux à deux dimensions

Un tableau 2D est un tableau de tableaux. Utile pour représenter une grille ou une matrice :

int[][] grille = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};

System.out.println(grille[1][2]); // 6 (ligne 1, colonne 2)

Parcours d'un tableau 2D avec deux boucles imbriquées :

for (int i = 0; i < grille.length; i++) {
for (int j = 0; j < grille[i].length; j++) {
System.out.print(grille[i][j] + " ");
}
System.out.println();
}

La classe Arrays

La classe Arrays (à importer) offre des méthodes utiles :

import java.util.Arrays;

int[] tab = {5, 2, 8, 1, 9};

Arrays.sort(tab); // Trie le tableau (modifie l'original)
System.out.println(Arrays.toString(tab)); // [1, 2, 5, 8, 9] (affichage lisible)
Limitation des tableaux

Les tableaux ont une taille fixe définie à la création : on ne peut pas les agrandir ou les réduire. Pour une liste de taille variable, on utilisera ArrayList (séance suivante).

Exemple pratique

import java.util.Arrays;

public class TableauxDemo {

public static void main(String[] args) {
// Tableau de notes
int[] notes = {14, 9, 17, 12, 15, 8, 18};

// Afficher toutes les notes
System.out.println("Notes : " + Arrays.toString(notes));
System.out.println("Nombre de notes : " + notes.length);

// Calculer la moyenne
int somme = 0;
for (int note : notes) {
somme += note;
}
double moyenne = (double) somme / notes.length;
System.out.println("Moyenne : " + moyenne);

// Trouver le maximum
int max = notes[0];
for (int note : notes) {
if (note > max) {
max = note;
}
}
System.out.println("Meilleure note : " + max);

// Trier les notes
Arrays.sort(notes);
System.out.println("Notes triées : " + Arrays.toString(notes));
}
}
astuce

(double) somme / notes.length : le cast (double) force la conversion de somme en double pour obtenir une division décimale.

Test de mémorisation/compréhension


Quel est l'indice du premier élément d'un tableau en Java ?


Comment obtenir la taille d'un tableau `tab` en Java ?


Que se passe-t-il si on accède à `tab[10]` alors que `tab` a seulement 5 éléments ?


Quelle méthode de la classe Arrays affiche un tableau sous forme lisible ?


Quelle est la principale limitation d'un tableau en Java ?


Comment déclare-t-on un tableau d'entiers de 10 cases vides en Java ?


TP pour réfléchir et résoudre des problèmes

Vous allez créer un programme qui gère les notes d'une classe et calcule des statistiques.

Étape 1 — Initialiser le tableau de notes

Déclare un tableau de 6 notes entières initialisées avec des valeurs.


Bonne pratique - Initialiser avec des valeurs littérales

Quand les valeurs sont connues à l'avance, préférez int[] tab = {1, 2, 3} à int[] tab = new int[3]; tab[0]=1; .... C'est plus concis et moins sujet aux erreurs d'indice.

Étape 2 — Calculer la somme avec une boucle

Calcule la somme de toutes les notes en utilisant une boucle for-each.


Bonne pratique - Opérateurs d'affectation composés

Préférez somme += note; à somme = somme + note;. Les opérateurs composés (+=, -=, *=, /=) sont plus courts et expriment clairement l'intention : "ajouter quelque chose à la variable existante".

Étape 3 — Trier et afficher le tableau

Triez le tableau de notes et affichez-le dans l'ordre croissant.


Bonne pratique - Arrays.sort modifie le tableau original

Arrays.sort() trie le tableau sur place (in-place), ce qui signifie qu'il modifie le tableau original. Si vous avez besoin de conserver l'ordre original, créez d'abord une copie avec Arrays.copyOf(tab, tab.length) avant de trier.

📌 Une solution