05 - Tableaux
Apprenez à stocker et gérer les collections de données en utilisant des tableaux.
Les tableaux vous permettent de stocker plusieurs valeurs du même type dans une seule variable. Pensez à un tableau comme une ligne de boîtes, chacune contenant un élément.
Créer des tableaux
Méthode 1 : Déclarer et initialiser séparément
int[] nombres; // Déclaration
nombres = new int[5]; // Crée un tableau avec 5 espacesMéthode 2 : Tout en une fois
int[] nombres = new int[5];Méthode 3 : Avec des valeurs initiales
int[] nombres = { 10, 20, 30, 40, 50 };Une fois que vous avez créé un tableau, sa taille est fixe. Vous ne pouvez pas rajouter ou supprimer des éléments plus tard !
int[] inventaire = new int[9]; // A toujours exactement 9 emplacementsAccès aux éléments du tableau
Les tableaux utilisent des nombres indices à partir de 0 :
String[] joueurs = { "Alice", "Bob", "Charlie" };
System.out.println(joueurs[0]); // "Alice"
System.out.println(joueurs[1]); // "Bob"
System.out.println(joueurs[2]); // "Charlie"Représentation visuelle
| Indice | 0 | 1 | 2 |
|---|---|---|---|
| Valeur | "Alice" | "Bob" | "Charlie" |
Modifier les valeurs du tableau
int[] vie = { 100, 80, 90 };
vie[1] = 60; // Change la vie de Bob et la met à 60
System.out.println(vie[0]); // 100
System.out.println(vie[1]); // 60
System.out.println(vie[2]); // 90Longueur de tableau
Utilisez .length pour obtenir la taille d'un tableau
int[] scores = {45, 67, 89, 92, 55};
System.out.println(scores.length); // 5Remarquez qu'il n'y a pas de parenthèses ! C'est array.length, et pas array.length().
Boucler à travers des tableaux
En utilisant la boucle for
String[] objets = { "Épée", "Bouclier", "Potion" };
for (int i = 0; i < objets.length; i++) {
System.out.println(objets[i]);
}En utilisant les boucles for améliorées (for-each)
String[] objets = { "Épée", "Bouclier", "Potion" };
for (String objet : objets) {
System.out.println(objet);
}La boucle for améliorée est plus simple et plus sûre, mais vous ne pouvez pas modifier le tableau ou connaitre l'indice actuel.
// Quand vous avez besoin de l'indice
for (int i = 0; i < objets.length; i++) {
System.out.println(i + ": " + objets[i]);
}
// Quand vous avez juste besoin des valeurs
for (String objet : objets) {
System.out.println(objet);
}Tableaux multidimensionnels
Les tableaux peuvent contenir d'autres tableaux, formant des grilles :
int[][] grille = {
{ 1, 2, 3 },
{ 4, 5, 6 },
{ 7, 8, 9 }
};
System.out.println(grille[0][0]); // 1
System.out.println(grille[1][2]); // 6
System.out.println(grille[2][1]); // 8Représentation visuelle
| 0 | 1 | 2 | |
|---|---|---|---|
| 0 | 1 | 2 | 3 |
| 1 | 4 | 5 | 6 |
| 2 | 7 | 8 | 9 |
Boucler sur des tableaux à 2 dimensions
int[][] grille = {
{ 1, 2, 3 },
{ 4, 5, 6 }
};
for (int ligne = 0; ligne < grille.length; ligne++) {
for (int col = 0; col < grille[ligne].length; col++) {
System.out.print(grille[ligne][col] + " ");
}
System.out.println();
}Exemples pratiques
Système d'inventaire du joueur
String[] inventaire = new String[9]; // 9 emplacements dans la barre de raccourcis
// Ajouter des items
inventaire[0] = "Épée en diamant";
inventaire[1] = "Bouclier";
inventaire[8] = "Nourriture";
// Afficher l'inventaire
for (int i = 0; i < inventaire.length; i++) {
if (inventaire[i] != null) {
System.out.println("Emplacement " + i + ": " + inventaire[i]);
} else {
System.out.println("Emplacement " + i + ": Vide");
}
}Trouver le score le plus élevé
int[] scores = { 45, 92, 67, 88, 55, 71 };
int plusGrand = scores[0];
for (int i = 1; i < scores.length; i++) {
if (scores[i] > plusGrand) {
plusGrand = scores[i];
}
}
System.out.println("Score le plus élevé : " + plusGrand);Calculer la moyenne
double[] temperatures = { 23.5, 25.0, 22.8, 24.3, 26.1 };
double somme = 0;
for (double temp : temperatures) {
somme += temp;
}
double moyenne = somme / temperatures.length;
System.out.println("Température moyenne : " + moyenne);Grille de blocs (Tableau 2D)
String[][] terrain = new String[5][5];
// Remplir avec de l'herbe
for (int x = 0; x < 5; x++) {
for (int z = 0; z < 5; z++) {
terrain[x][z] = "herbe";
}
}
// Placer un peu de pierre
terrain[2][2] = "pierre";
terrain[1][3] = "pierre";
// Afficher la grille
for (int x = 0; x < terrain.length; x++) {
for (int z = 0; z < terrain[x].length; z++) {
System.out.print(terrain[x][z] + " ");
}
System.out.println();
}Opérations courantes sur les tableaux
Copier un tableau
int[] original = { 1, 2, 3, 4, 5 };
int[] copie = original.clone();
// Ou manuellement
int[] copie2 = new int[original.length];
for (int i = 0; i < original.length; i++) {
copie2[i] = original[i];
}Rechercher une valeur
String[] objets = { "Épée", "Bouclier", "Potion", "Arc" };
String cible = "Potion";
int indiceTrouve = -1;
for (int i = 0; i < objets.length; i++) {
if (objets[i].equals(cible)) {
indiceTrouve = i;
break;
}
}
if (indiceTrouve != -1) {
System.out.println("Trouvé à l'indice : " + indiceTrouve );
} else {
System.out.println("Pas trouvé");
}Compter les occurrences
String[] blocs = { "pierre", "terre", "pierre", "herbe", "pierre" };
String rechercher = "pierre";
int compteur = 0;
for (String bloc : blocs) {
if (bloc.equals(rechercher)) {
compteur ++;
}
}
System.out.println(rechercher + " apparaît " + compteur + " fois");Limitations des tableaux
Les tableaux ne peuvent pas s'agrandir ou se rétrécir. Si vous avez besoin de flexibilité, vous apprendrez les ArrayList plus tard !
int[] nombres = new int[5];
// On ne peut pas ajouter un 6e élément !
// Si vous avez besoin de plus d'espace, créez un nouveau tableau
int[] plusGrand = new int[10];
for (int i = 0; i < nombres.length; i++) {
plusGrand[i] = nombres[i];
}