Exercice : Gestion d'un Tableau d'Animaux avec Exceptions

Contexte :

Vous êtes chargé de développer un programme qui gère un tableau d'animaux dans un zoo. Le programme permet d'ajouter des animaux au tableau, de les retirer, et de consulter les informations des animaux. Il est important de gérer les cas où l'utilisateur tente d'accéder à un index invalide dans le tableau.

qUESTIONS Exercice Java : Gestion d'un Tableau d'Animaux avec Exceptions:

  1. Création de la Classe Animal:
    • Créez une classe Animal avec les attributs name (nom de l'animal) et species (espèce de l'animal).
    • Ajoutez une méthode getDetails() qui renvoie une chaîne de caractères contenant les informations de l'animal.
  2. Classe Zoo:
    • Créez une classe Zoo qui contient un tableau d'objets Animal.
    • Implémentez les méthodes suivantes :
      • addAnimal(Animal animal): Ajoute un animal au tableau.
      • getAnimal(int index): Renvoie l'animal à l'index spécifié. Si l'index est en dehors des limites du tableau, gérez une ArrayIndexOutOfBoundsException.
      • removeAnimal(int index): Retire l'animal à l'index spécifié. Si l'index est en dehors des limites du tableau, gérez une ArrayIndexOutOfBoundsException.
  3. Gestion des Exceptions dans main:
    • Dans la méthode main, créez un objet Zoo et ajoutez plusieurs animaux au tableau.
    • Tentez de consulter et de retirer des animaux en utilisant des index valides et invalides.
    • Gérez les exceptions ArrayIndexOutOfBoundsException en affichant un message approprié.

 

Correction attendue :


// Classe représentant un animal
class Animal {
    private String name;
    private String species;

    public Animal(String name, String species) {
        this.name = name;
        this.species = species;
    }

    public String getDetails() {
        return "Nom: " + name + ", Espèce: " + species;
    }
}

// Classe représentant le zoo
class Zoo {
    private Animal[] animals;
    private int count;

    public Zoo(int capacity) {
        animals = new Animal[capacity];
        count = 0;
    }

    public void addAnimal(Animal animal) {
        if (count < animals.length) {
            animals[count++] = animal;
            System.out.println("Ajouté : " + animal.getDetails());
        } else {
            System.out.println("Le zoo est plein !");
        }
    }

    public Animal getAnimal(int index) {
        try {
            return animals[index];
        } catch (ArrayIndexOutOfBoundsException e) {
            System.out.println("Index " + index + " est hors des limites du tableau.");
            return null;
        }
    }

    public void removeAnimal(int index) {
        try {
            System.out.println("Retiré : " + animals[index].getDetails());
            animals[index] = null;
            // Décalage des éléments pour combler l'espace vide
            for (int i = index; i < count - 1; i++) {
                animals[i] = animals[i + 1];
            }
            animals[--count] = null;
        } catch (ArrayIndexOutOfBoundsException e) {
            System.out.println("Index " + index + " est hors des limites du tableau.");
        }
    }
}

// Classe principale pour tester la gestion du zoo
public class ZooManager {
    public static void main(String[] args) {
        Zoo zoo = new Zoo(3);

        Animal lion = new Animal("Lion", "Panthera leo");
        Animal tiger = new Animal("Tigre", "Panthera tigris");
        Animal elephant = new Animal("Éléphant", "Loxodonta");

        zoo.addAnimal(lion);
        zoo.addAnimal(tiger);
        zoo.addAnimal(elephant);

        // Essayer de récupérer des animaux avec des index valides et invalides
        System.out.println(zoo.getAnimal(1).getDetails()); // Index valide
        zoo.getAnimal(3);
    }
}

Expliquez les sorties des instructions java suivantes : table.printindex1(5), table.printindex2(5), table.printindex3(5) :

public class Tableau {

    private int[] tab;

    public Tableau(int length) {
        tab = new int[length];
    }

    public static void main(String[] args) throws IndexTabException {
        Tableau tableau = new Tableau(5);

        tableau.printIndex1(5);
        tableau.printIndex2(5);
        tableau.printIndex3(5);
    }

    void printIndex1(int i) {
        try {
            System.out.println(tab[i]);
        } catch (IndexOutOfBoundsException e) {
            System.out.println("Index invalide");
        }
    }

    void printIndex2(int i) {
        try {
            if (i < 0 || i >= tab.length) {
                throw new IndexOutOfBoundsException();
            }
            System.out.println(tab[i]);
        } catch (IndexOutOfBoundsException e) {
            System.out.println("Index invalide");
        }
    }

    void printIndex3(int i) throws IndexTabException {
        if (i < 0 || i >= tab.length) {
            throw new IndexTabException("Index invalide");
        }
        System.out.println(tab[i]);
    }
}

class IndexTabException extends Exception {
    public IndexTabException(String s) {
        super(s);
    }
}

Pour comprendre les sorties des instructions table.printIndex1(5), table.printIndex2(5), et table.printIndex3(5), examinons chaque méthode séparément. table.printIndex1(5) : La méthode printIndex1 essaie d'accéder à l'élément tab[5]. Cependant, la taille du tableau est de 5 (Tableau tableau = new Tableau(5)), donc le dernier index valide est tab[4]. En conséquence, une IndexOutOfBoundsException sera déclenchée, et le bloc catch sera exécuté, affichant "Index invalide". table.printIndex2(5) : La méthode printIndex2 vérifie d'abord si l'index i est dans la plage valide. Comme i est égal à 5 et la taille du tableau est de 5, la condition i >= tab.length est vraie. Par conséquent, la méthode lance une IndexOutOfBoundsException, et le bloc catch est exécuté, affichant "Index invalide". table.printIndex3(5) : La méthode printIndex3 lance directement une IndexTabException si l'index i est en dehors de la plage valide. Comme i est égal à 5 et la taille du tableau est de 5, une IndexTabException sera déclenchée, affichant "Index invalide".

Si vous avez trouvé les exercices corrigés en Java de Mr JoëlYk intéressants et utiles, pourquoi ne pas les partager avec d'autres personnes qui pourraient également en bénéficier ? Partagez ce lien sur les réseaux sociaux ou envoyez-le à vos amis et collègues. Vous pourriez aider quelqu'un à améliorer ses compétences en programmation ou à trouver des solutions à des problèmes complexes. N'oubliez pas que la connaissance doit être partagée pour grandir. Merci pour votre soutien et votre partage !

Contact WhatsApp : +237 652027193 | Réaliser Par Joël_Yk

Aucune note. Soyez le premier à attribuer une note !

Ajouter un commentaire

Anti-spam