Si la déclaration pour vérifier si le tableau est nul ou vide, ne fonctionne pas

Capitaine d'Apple:

Je suis ma tâche principale de travail (traduction approximative):

Écrire une méthode qui retourne le plus petit nombre d'un tableau 1d d'entiers.

Maintenant, je dois faire une tâche latérale (traduction approximative):

Ajouter une instruction if pour vérifier si le tableau est nul ou vide, et si elle est, retour 0.

méthode:

public static int smallestNumber (int[] array1) {

    int smallest = array1[0];

    if (array1 == null || array1.length == -1) {
       return 0;
    }

    else {
       for (int element : array1) {
          if (element < smallest) {
           smallest = element;
          }
       }
    }
return smallest;    
}

principale:

public static void main(String[] args) {
  int[] tab1 = {}; //empty array?
  int smallestNumber = smallestNumber(tab1);
  System.out.printf("The smallest number is: %d", smallestNumber);
}

La méthode fonctionne si je vérifie uniquement null. Mais je suis confus pourquoi il ne sera pas le travail sur tableau vide.

int[] tab1 = {};

EDIT: J'ai aussi essayé avec array1.length == 0;

Merci plein Guy:

Tout d' abord, les tableaux sont de taille non négatif donc array1.lengthne peut pas être -1, au lieu de faire la comparaison avec 0.

En second lieu , l'affectation int smallest = array1[0];tente d'accéder à la position de 0e d'un tableau vide qui entraînera java.lang.ArrayIndexOutOfBoundsException.

Donc , en conclusion déplacer l'affectation à smallestdans le bloc autre et vérifier l'état de tableau vide ou nul avant d'essayer d'accéder à une valeur de tableau.

public static int smallestNumber (int[] array1) {

    int smallest;

    if (array1 == null || array1.length == 0) {
        return 0;
    }

    else {
        smallest = array1[0];
        for (int element : array1) {
            if (element < smallest) {
                smallest = element;
            }
        }
    }
    return smallest;
}

Je suppose que tu aimes

Origine http://43.154.161.224:23101/article/api/json?id=201188&siteId=1
conseillé
Classement