Cours sur les Tableaux en Java
Introduction aux Tableaux
Les tableaux en Java sont des structures de données permettant de stocker plusieurs valeurs du même type dans une seule variable. Ils sont très utiles lorsque vous devez gérer un grand nombre de données similaires, comme une liste de commandes de livraison.
Par exemple, si vous gérez une entreprise de livraison de nourriture au Cameroun, vous pourriez utiliser des tableaux pour stocker les noms des clients, les adresses de livraison, les montants des commandes, etc.
Syntaxe des Tableaux en Java
Déclaration de Tableaux
La déclaration d'un tableau en Java consiste à spécifier le type des éléments du tableau suivi de crochets []
et du nom du tableau.
int[] commandesLivraisons; // Tableau d'entiers
String[] nomsClients; // Tableau de chaînes de caractères
double[] distancesLivraisons; // Tableau de nombres décimaux
Création de Tableaux
Après avoir déclaré un tableau, vous devez le créer en utilisant le mot-clé new
suivi du type et de la taille du tableau.
commandesLivraisons = new int[5]; // Création d'un tableau de 5 entiers
nomsClients = new String[]{"Alice", "Bob", "Charlie", "Diane", "Eve"}; // Création et initialisation d'un tableau de chaînes
distancesLivraisons = new double[]{1.5, 2.3, 4.7, 3.1, 0.5}; // Création et initialisation d'un tableau de doubles
Accès aux Éléments d'un Tableau
Pour accéder aux éléments d'un tableau, utilisez l'index de l'élément entre crochets. Notez que les indices commencent à 0.
int premiereCommande = commandesLivraisons[0]; // Accéder au premier élément
String nomPremierClient = nomsClients[0]; // Accéder au premier client
double distancePremiereLivraison = distancesLivraisons[0]; // Accéder à la première distance de livraison
Tableaux Multidimensionnels
Les tableaux multidimensionnels sont des tableaux de tableaux. Ils peuvent être utilisés pour représenter des données en deux dimensions ou plus.
Par exemple, si vous avez une grille de livraisons où chaque ligne représente un quartier et chaque colonne une adresse spécifique, vous pouvez utiliser un tableau 2D.
int[][] grilleLivraisons = new int[3][3]; // Tableau 2D de 3x3
grilleLivraisons[0][0] = 1; // Initialiser la première cellule
grilleLivraisons[1][2] = 5; // Initialiser une autre cellule
Attribut length
L'attribut length
permet d'obtenir la taille du tableau, c'est-à-dire le nombre d'éléments qu'il peut contenir.
int nombreCommandes = commandesLivraisons.length; // Taille du tableau commandesLivraisons
int nombreClients = nomsClients.length; // Taille du tableau nomsClients
Passage de Tableaux en Paramètre
Vous pouvez passer des tableaux en paramètres aux méthodes, ce qui permet de traiter des collections d'éléments de manière modulaire. Par exemple, vous pouvez créer une méthode pour afficher toutes les commandes de livraison.
public void afficherCommandes(int[] commandes) {
for(int i = 0; i < commandes.length; i++) {
System.out.println("Commande " + (i + 1) + ": " + commandes[i]);
}
}
// Appel de la méthode
afficherCommandes(commandesLivraisons);
Boucles sur les Tableaux
Boucle for
La boucle for
est couramment utilisée pour parcourir les éléments d'un tableau. Elle vous permet d'accéder à chaque élément en utilisant son index.
for(int i = 0; i < commandesLivraisons.length; i++) {
System.out.println("Commande " + (i + 1) + ": " + commandesLivraisons[i]);
}
Boucle foreach
La boucle foreach
permet de parcourir directement les éléments d'un tableau sans avoir à gérer les indices. C'est une manière plus concise d'écrire une boucle lorsque vous n'avez pas besoin des indices.
for(String nom : nomsClients) {
System.out.println("Client: " + nom);
}
Méthodes Utilitaires
Classe Arrays
La classe Arrays
fournit des méthodes utilitaires pour manipuler les tableaux, comme le tri et la conversion en chaîne de caractères.
import java.util.Arrays;
Arrays.sort(distancesLivraisons); // Trier le tableau des distances
System.out.println(Arrays.toString(distancesLivraisons)); // Afficher le tableau sous forme de chaîne
Classe System
La classe System
permet de copier des tableaux efficacement en utilisant la méthode arraycopy
.
int[] nouvellesCommandes = new int[commandesLivraisons.length];
System.arraycopy(commandesLivraisons, 0, nouvellesCommandes, 0, commandesLivraisons.length); // Copier le tableau
Méthode clone
La méthode clone
permet de créer une copie d'un tableau. Chaque tableau en Java hérite de cette méthode de la classe Object
.
int[] copieCommandes = commandesLivraisons.clone(); // Cloner le tableau
Exceptions sur les Tableaux
Les exceptions courantes lors de l'utilisation des tableaux incluent ArrayIndexOutOfBoundsException
et NullPointerException
.
L'exception ArrayIndexOutOfBoundsException
est levée lorsque vous essayez d'accéder à un indice en dehors des limites du tableau.
try {
int commande = commandesLivraisons[10]; // Peut lancer ArrayIndexOutOfBoundsException
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("Index hors limites!");
}
L'exception NullPointerException
est levée lorsque vous essayez d'utiliser un tableau non initialisé.
try {
int[] tableauNull = null;
int longueur = tableauNull.length; // Peut lancer NullPointerException
} catch (NullPointerException e) {
System.out.println("Tableau non initialisé!");
}
Exercice
Créez un programme qui :
- Déclare un tableau des noms de clients.
- Déclare un tableau des distances de livraison.
- Affiche chaque client et sa distance de livraison correspondante en utilisant une boucle
for
.
- Calcule et affiche la distance moyenne de livraison.
public class LivraisonNourriture {
public static void main(String[] args) {
String[] nomsClients = {"Alice", "Bob", "Charlie", "Diane", "Eve"};
double[] distancesLivraisons = {1.5, 2.3, 4.7, 3.1, 0.5};
// Afficher chaque client et sa distance de livraison
for (int i = 0; i < nomsClients.length; i++) {
System.out.println("Client: " + nomsClients[i] + ", Distance: " + distancesLivraisons[i] + " km");
}
// Calculer la distance moyenne de livraison
double sommeDistances = 0;
for (double distance : distancesLivraisons) {
sommeDistances += distance;
}
double distanceMoyenne = sommeDistances / distancesLivraisons.length;
System.out.println("Distance moyenne de livraison: " + distanceMoyenne + " km");
}
}