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");
}
}

Quiz sur les Tableaux en Java

Section 1 : Introduction aux Tableaux

  • 1. Qu'est-ce qu'un tableau en Java ?

  • 2. Pourquoi utilise-t-on des tableaux en Java ?

  • 3. Quel est l'avantage principal des tableaux par rapport aux variables individuelles ?

Section 2 : Syntaxe des Tableaux

  • 4. Comment déclare-t-on un tableau d'entiers en Java ?

  • 5. Comment crée-t-on un tableau de 5 entiers en Java ?

  • 6. Comment accède-t-on au premier élément d'un tableau nommé `tableau` ?

Section 3 : Tableaux Multidimensionnels

  • 7. Comment déclare-t-on un tableau 2D de 3x3 en Java ?

  • 8. Comment accède-t-on à l'élément de la première ligne et de la deuxième colonne d'un tableau 2D nommé `tableau` ?

  • 9. Quelle est la taille totale d'un tableau 2D de 4x5 ?

Section 4 : Attribut length

  • 10. Que retourne l'attribut length pour un tableau ?

  • 11. Quelle est la valeur de `tableau.length` pour un tableau `int[ ] tableau = new int[10];` ?

  • 12. Comment accède-t-on à la longueur d'un tableau 2D nommé `tableau` ?

Section 5 : Passage de Tableaux en Paramètre

  • 13. Comment passe-t-on un tableau en paramètre à une méthode ?

  • 14. Quelle est la syntaxe correcte pour passer un tableau en paramètre ?

  • 15. Quel type de données peut être passé en paramètre de méthode en tant que tableau ?

Section 6 : Boucles sur les Tableaux

  • 16. Quelle boucle est couramment utilisée pour parcourir les éléments d'un tableau ?

  • 17. Quelle est la syntaxe correcte d'une boucle for pour parcourir un tableau nommé `tableau` ?

  • 18. Quelle boucle est plus concise pour parcourir directement les éléments d'un tableau ?

  • 19. Quelle est la syntaxe correcte d'une boucle foreach pour parcourir un tableau de chaînes nommé `tableau` ?

  • 20. Pourquoi utiliser une boucle foreach plutôt qu'une boucle for traditionnelle ?

Section 7 : Méthodes Utilitaires

  • 21. Quelle classe fournit des méthodes utilitaires pour manipuler les tableaux ?

  • 22. Comment trie-t-on un tableau nommé `tableau` en utilisant la classe `Arrays` ?

  • 23. Quelle méthode de la classe `Arrays` permet d'afficher un tableau sous forme de chaîne ?

  • 24. Quelle méthode de la classe `System` permet de copier un tableau ?

  • 25. Quelle est la méthode correcte pour cloner un tableau ?

Section 8 : Exceptions sur les Tableaux

  • 26. Quelle exception est levée lorsqu'on accède à un indice en dehors des limites du tableau ?

  • 27. Quelle exception est levée lorsqu'on essaie d'utiliser un tableau non initialisé ?

  • 28. Quelle exception est levée lorsqu'on affecte un élément de type incompatible dans un tableau ?

Section 9 : Questions Pratiques

  • 29. Écrivez une méthode qui prend un tableau d'entiers et retourne la somme de ses éléments.

    public int somme(int[] tableau) {
        // Votre code ici
    }
  • 30. Écrivez une méthode qui prend un tableau de chaînes et retourne le nombre de chaînes non nulles.

    public int compterNonNulles(String[] tableau) {
        // Votre code ici
    }
  • 31. Comment déclare-t-on et initialise-t-on un tableau de chaînes de taille 3 avec les valeurs "Alice", "Bob" et "Charlie" ?

    String[] noms = {"Alice", "Bob", "Charlie"};
  • 32. Comment parcourt-on un tableau 2D de manière classique en utilisant deux boucles for imbriquées ?

    for (int i = 0; i < tableau.length; i++) {
        for (int j = 0; j < tableau[i].length; j++) {
            // Votre code ici
        }
    }

Section 10 : Divers

  • 33. Quel est le type de retour de la méthode clone() pour un tableau d'entiers ?

  • 34. Quelle est la différence entre `length` et `length()` pour un tableau et une chaîne de caractères ?

  • 35. Peut-on avoir un tableau de taille dynamique en Java ?

  • 36. Comment initialise-t-on un tableau d'entiers avec toutes les valeurs à zéro ?

    int[] tableau = new int[10];
  • 37. Comment copie-t-on un tableau `source` dans un tableau `destination` de même taille ?

    System.arraycopy(source, 0, destination, 0, source.length);
  • 38. Quelle méthode de la classe `Arrays` compare deux tableaux pour vérifier s'ils sont égaux ?

  • 39. Quelle est la méthode correcte pour remplir un tableau avec une valeur spécifique ?

    Arrays.fill(tableau, valeur);
  • 40. Quelle méthode de la classe `Arrays` permet de rechercher un élément dans un tableau trié ?

 
 
Aucune note. Soyez le premier à attribuer une note !

Ajouter un commentaire

Anti-spam