Comment vérifier si un tableau est vide en Java

JavaJavaBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire (lab), vous apprendrez à vérifier si un tableau (array) en Java est vide. Nous aborderons la technique fondamentale consistant à vérifier la longueur du tableau et nous expliquerons également comment gérer les cas où le tableau lui-même pourrait être nul (null). Vous pratiquerez ces concepts avec différents types de tableaux pour consolider votre compréhension.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("Java")) -.-> java/ObjectOrientedandAdvancedConceptsGroup(["Object-Oriented and Advanced Concepts"]) java(("Java")) -.-> java/BasicSyntaxGroup(["Basic Syntax"]) java(("Java")) -.-> java/DataStructuresGroup(["Data Structures"]) java/BasicSyntaxGroup -.-> java/operators("Operators") java/BasicSyntaxGroup -.-> java/if_else("If...Else") java/DataStructuresGroup -.-> java/arrays("Arrays") java/DataStructuresGroup -.-> java/arrays_methods("Arrays Methods") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/exceptions("Exceptions") subgraph Lab Skills java/operators -.-> lab-560002{{"Comment vérifier si un tableau est vide en Java"}} java/if_else -.-> lab-560002{{"Comment vérifier si un tableau est vide en Java"}} java/arrays -.-> lab-560002{{"Comment vérifier si un tableau est vide en Java"}} java/arrays_methods -.-> lab-560002{{"Comment vérifier si un tableau est vide en Java"}} java/exceptions -.-> lab-560002{{"Comment vérifier si un tableau est vide en Java"}} end

Vérifier si la longueur du tableau est nulle

Dans cette étape, nous apprendrons à vérifier si un tableau (array) en Java est vide en vérifiant sa longueur. Il s'agit d'une opération fondamentale lorsque vous travaillez avec des tableaux pour éviter les erreurs.

Tout d'abord, créons un nouveau fichier Java nommé ArrayLengthCheck.java dans votre répertoire ~/project. Vous pouvez le faire en utilisant l'explorateur de fichiers de l'IDE Web à gauche. Cliquez avec le bouton droit dans la zone ~/project, sélectionnez "Nouveau fichier" et tapez ArrayLengthCheck.java.

Maintenant, ouvrez le fichier ArrayLengthCheck.java dans l'éditeur et ajoutez le code suivant :

public class ArrayLengthCheck {

    public static void main(String[] args) {
        // Declare and initialize an empty integer array
        int[] emptyArray = {};

        // Declare and initialize an integer array with elements
        int[] populatedArray = {1, 2, 3, 4, 5};

        // Check the length of the empty array
        if (emptyArray.length == 0) {
            System.out.println("emptyArray is empty.");
        } else {
            System.out.println("emptyArray is not empty. Length: " + emptyArray.length);
        }

        // Check the length of the populated array
        if (populatedArray.length == 0) {
            System.out.println("populatedArray is empty.");
        } else {
            System.out.println("populatedArray is not empty. Length: " + populatedArray.length);
        }
    }
}

Comprenons les nouveaux concepts ici :

  • int[] emptyArray = {}; : Cela déclare un tableau d'entiers nommé emptyArray et l'initialise comme un tableau vide.
  • int[] populatedArray = {1, 2, 3, 4, 5}; : Cela déclare un tableau d'entiers nommé populatedArray et l'initialise avec cinq éléments entiers.
  • array.length : Il s'agit d'une propriété d'un tableau en Java qui vous donne le nombre d'éléments dans le tableau.
  • if (condition) { ... } else { ... } : Il s'agit d'une instruction if-else, une structure de contrôle de flux fondamentale en programmation. Elle permet à votre programme de prendre des décisions. Si la condition entre parenthèses est vraie, le code à l'intérieur du bloc if est exécuté. Sinon, le code à l'intérieur du bloc else est exécuté.

Dans ce code, nous utilisons la propriété .length pour vérifier si la longueur de chaque tableau est égale à 0. Si c'est le cas, nous affichons un message indiquant que le tableau est vide. Sinon, nous affichons un message indiquant qu'il n'est pas vide et nous affichons également sa longueur.

Enregistrez le fichier (Ctrl+S ou Cmd+S).

Maintenant, ouvrez le terminal en bas de l'IDE Web. Assurez-vous que vous êtes dans le répertoire ~/project. Sinon, utilisez la commande cd ~/project.

Compilez le programme Java en utilisant la commande javac :

javac ArrayLengthCheck.java

Si la compilation réussit, vous ne verrez aucun résultat. Un fichier ArrayLengthCheck.class sera créé dans le répertoire ~/project.

Maintenant, exécutez le programme compilé en utilisant la commande java :

java ArrayLengthCheck

Vous devriez voir la sortie suivante :

emptyArray is empty.
populatedArray is not empty. Length: 5

Cette sortie confirme que notre programme a correctement identifié le tableau vide et le tableau rempli en fonction de leur longueur. Vérifier la longueur d'un tableau avant d'essayer d'accéder à ses éléments est une étape cruciale pour éviter des erreurs telles que ArrayIndexOutOfBoundsException, qui se produit lorsque vous essayez d'accéder à un élément à un index qui n'existe pas dans le tableau.

Gérer les tableaux nuls (null)

Dans l'étape précédente, nous avons appris à vérifier si un tableau (array) est vide en vérifiant sa longueur. Cependant, il y a un autre scénario important à considérer : que se passe-t-il si le tableau lui-même est null ?

En Java, une variable peut contenir une référence à un objet, ou elle peut contenir la valeur spéciale null, ce qui signifie qu'elle ne fait référence à aucun objet. Si vous essayez d'accéder à la propriété .length d'une variable de tableau qui est null, votre programme plantera avec une NullPointerException. Il s'agit d'une erreur très courante en Java, il est donc important de savoir comment la gérer.

Modifions notre programme précédent pour démontrer et gérer les tableaux null.

Ouvrez le fichier ArrayLengthCheck.java dans l'éditeur de l'IDE Web.

Remplacez le code existant par le suivant :

public class ArrayLengthCheck {

    public static void main(String[] args) {
        // Declare an integer array but do not initialize it (it will be null)
        int[] nullArray = null;

        // Declare and initialize an empty integer array
        int[] emptyArray = {};

        // Declare and initialize an integer array with elements
        int[] populatedArray = {1, 2, 3, 4, 5};

        // Function to check if an array is null or empty
        checkArrayStatus(nullArray, "nullArray");
        checkArrayStatus(emptyArray, "emptyArray");
        checkArrayStatus(populatedArray, "populatedArray");
    }

    // A helper method to check and print the status of an array
    public static void checkArrayStatus(int[] arr, String arrayName) {
        System.out.println("Checking " + arrayName + "...");
        if (arr == null) {
            System.out.println(arrayName + " is null.");
        } else if (arr.length == 0) {
            System.out.println(arrayName + " is empty.");
        } else {
            System.out.println(arrayName + " is not empty. Length: " + arr.length);
        }
        System.out.println(); // Print a blank line for better readability
    }
}

Examinons les modifications :

  • int[] nullArray = null; : Nous déclarons une variable de tableau d'entiers nullArray et nous lui attribuons explicitement la valeur null.
  • public static void checkArrayStatus(int[] arr, String arrayName) : Nous avons créé une nouvelle méthode appelée checkArrayStatus. Cette méthode prend un tableau d'entiers (arr) et une chaîne de caractères (arrayName) en entrée. Cela nous permet de réutiliser la logique de vérification de l'état du tableau.
  • if (arr == null) : C'est la partie cruciale pour gérer les tableaux null. Nous vérifions d'abord si la variable de tableau arr est null en utilisant l'opérateur d'égalité ==. Si elle est null, nous affichons un message et nous cessons de vérifier les autres conditions pour ce tableau.
  • else if (arr.length == 0) : Cette vérification n'est effectuée que si le tableau n'est pas null. Si le tableau n'est pas null, nous vérifions ensuite si sa longueur est 0 pour savoir s'il est vide.
  • La méthode main appelle maintenant checkArrayStatus pour chacun de nos tableaux (nullArray, emptyArray et populatedArray).

Enregistrez le fichier (Ctrl+S ou Cmd+S).

Ouvrez le terminal dans le répertoire ~/project.

Compilez le programme Java modifié :

javac ArrayLengthCheck.java

Si la compilation réussit, exécutez le programme :

java ArrayLengthCheck

Vous devriez voir la sortie suivante :

Checking nullArray...
nullArray is null.

Checking emptyArray...
emptyArray is empty.

Checking populatedArray...
populatedArray is not empty. Length: 5

Cette sortie montre que notre programme a correctement identifié le tableau null, le tableau vide et le tableau rempli. En vérifiant si le tableau est null avant de vérifier sa longueur, nous évitons la NullPointerException qui se produirait si nous essayions d'accéder à .length sur un tableau null. Il s'agit d'une bonne pratique fondamentale en programmation Java.

Tester avec différents types de tableaux

Dans les étapes précédentes, nous avons travaillé avec un tableau d'entiers (int[]). Il est important de comprendre que les concepts de vérification de la valeur null et de vérification de la propriété .length s'appliquent aux tableaux de n'importe quel type de données en Java, que ce soit des types primitifs comme int, double ou boolean, ou des types d'objets comme String ou des classes personnalisées.

Modifions notre programme une fois de plus pour démontrer la vérification de l'état de tableaux de différents types.

Ouvrez le fichier ArrayLengthCheck.java dans l'éditeur de l'IDE Web.

Remplacez le code existant par le suivant :

public class ArrayLengthCheck {

    public static void main(String[] args) {
        // Declare a null String array
        String[] nullStringArray = null;

        // Declare an empty double array
        double[] emptyDoubleArray = {};

        // Declare a boolean array with elements
        boolean[] populatedBooleanArray = {true, false, true};

        // Declare a String array with elements
        String[] populatedStringArray = {"apple", "banana", "cherry"};

        // Use the helper method to check different array types
        checkArrayStatus(nullStringArray, "nullStringArray");
        checkArrayStatus(emptyDoubleArray, "emptyDoubleArray");
        checkArrayStatus(populatedBooleanArray, "populatedBooleanArray");
        checkArrayStatus(populatedStringArray, "populatedStringArray");
    }

    // A generic helper method to check and print the status of an array
    // We use Object[] because it can represent an array of any object type
    // For primitive types, the check still works on the array reference itself
    public static void checkArrayStatus(Object arr, String arrayName) {
        System.out.println("Checking " + arrayName + "...");
        if (arr == null) {
            System.out.println(arrayName + " is null.");
        } else if (arr instanceof Object[]) {
            // For object arrays, we can cast and check length
            Object[] objectArray = (Object[]) arr;
            if (objectArray.length == 0) {
                 System.out.println(arrayName + " is empty.");
            } else {
                 System.out.println(arrayName + " is not empty. Length: " + objectArray.length);
            }
        } else if (arr.getClass().isArray()) {
             // For primitive arrays, we can't cast to Object[], but can still check length
             // using reflection or simply rely on the null check and the fact that
             // primitive arrays also have a .length property accessible directly
             // (though accessing it here would require more complex reflection)
             // For simplicity in this example, we'll just indicate it's a non-null, non-empty primitive array
             // A more robust check would involve reflection or overloaded methods for each primitive type
             try {
                 int length = java.lang.reflect.Array.getLength(arr);
                 if (length == 0) {
                     System.out.println(arrayName + " is empty.");
                 } else {
                     System.out.println(arrayName + " is not empty. Length: " + length);
                 }
             } catch (IllegalArgumentException e) {
                  System.out.println("Could not determine length for " + arrayName);
             }

        } else {
             System.out.println(arrayName + " is not an array.");
        }
        System.out.println(); // Print a blank line for better readability
    }
}

Examinons les modifications :

  • Nous avons créé des tableaux de différents types : String[], double[] et boolean[].
  • La méthode checkArrayStatus prend maintenant Object arr comme paramètre. Cela lui permet d'accepter des tableaux de n'importe quel type, car tous les tableaux en Java sont des objets.
  • À l'intérieur de checkArrayStatus, nous vérifions d'abord si arr est null.
  • S'il n'est pas null, nous utilisons instanceof Object[] pour vérifier s'il s'agit d'un tableau d'objets. Si c'est le cas, nous le castons en Object[] et vérifions sa propriété .length.
  • Nous ajoutons également une vérification arr.getClass().isArray() pour voir si l'objet est un tableau (cela est vrai pour les tableaux d'objets et les tableaux de types primitifs).
  • Pour les tableaux de types primitifs, accéder directement à .length dans cette méthode générique est difficile sans utiliser la réflexion. Le code fourni utilise java.lang.reflect.Array.getLength(arr) comme moyen plus général d'obtenir la longueur de n'importe quel type de tableau.

Enregistrez le fichier (Ctrl+S ou Cmd+S).

Ouvrez le terminal dans le répertoire ~/project.

Compilez le programme Java modifié :

javac ArrayLengthCheck.java

Si la compilation réussit, exécutez le programme :

java ArrayLengthCheck

Vous devriez voir une sortie similaire à celle-ci :

Checking nullStringArray...
nullStringArray is null.

Checking emptyDoubleArray...
emptyDoubleArray is empty.

Checking populatedBooleanArray...
populatedBooleanArray is not empty. Length: 3

Checking populatedStringArray...
populatedStringArray is not empty. Length: 4

Cela démontre que les principes de vérification de la valeur null et de vérification de la longueur s'appliquent de manière cohérente à différents types de tableaux en Java. Bien que la méthode générique checkArrayStatus utilisant Object et la réflexion soit plus complexe, l'idée principale de vérifier d'abord la valeur null puis la propriété .length reste la même pour les types de tableaux spécifiques (comme int[], String[], etc.).

Résumé

Dans ce laboratoire (lab), nous avons appris à vérifier si un tableau en Java est vide en examinant sa propriété length. Nous avons créé un fichier Java ArrayLengthCheck.java et écrit du code pour déclarer des tableaux d'entiers vides et remplis. En utilisant une instruction if-else et en comparant la longueur du tableau à zéro, nous avons réussi à déterminer si chaque tableau était vide ou non, et avons affiché les résultats dans la console. Cette technique fondamentale est essentielle pour éviter les erreurs lors de la manipulation de tableaux.