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;
Tout d' abord, les tableaux sont de taille non négatif donc array1.length
ne 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 à smallest
dans 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;
}