J'ai écrit un programme où, si le tableau est composé de {1, 3, 6, 7, 12}, il retournera son écart minimum entre deux nombres. En d’autres termes, il trouvera d’abord les différences entre 3 et 1, 6 et 3, 7 et 6, et 12 et 7. Une fois leurs différences obtenues, la différence sera la moins grande, dans notre cas 1, puisque 6-7 = 1 . Si on nous donnait un ensemble de tableaux de {60}, par exemple, le programme renverrait 0 . Maintenant, si nous avions un ensemble de tableaux de {}, où rien n'est à l'intérieur, il retournera 0 ainsi que. Cependant, je ne peux pas obtenir mon programme pour retourner un 0! Il jette une exception. Qu'est-ce que j'ai raté? Comment devrais-je résoudre ce problème? Voici mon programme jusqu'à présent:
public static void main(String[] args) {
int[] numberSet = {1, 3, 6, 7, 12};
//int[] numberSet = {};
System.out.println(minGap(numberSet));
}
public static int minGap(int[] numberSet) {
int[] differenceArray = new int[numberSet.length-1];
int smallestNum = 0;
if (numberSet.length < 2) {
return 0;
}
else {
for(int i = 0; i < numberSet.length-1; i++) {
differenceArray[i] = numberSet[i+1] - numberSet[i];
}
Arrays.sort(differenceArray);
smallestNum = differenceArray[0];
return smallestNum;
}
}
Merci d'avance!
Votre test:
if (numberSet.length < 2) {
return 0;
}
doit être fait avant d’allouer un tableau de cette longueur dans l’instruction ci-dessous:
int[] differenceArray = new int[numberSet.length-1];
sinon, vous créez déjà un tableau de taille -1
, lorsque le numberSet.length = 0
. C'est assez étrange. Donc, déplacez votre if statement
en tant que première instruction de votre méthode.
Pour vérifier le tableau est nul:
int arr[] = null;
if (arr == null) {
System.out.println("array is null");
}
Pour vérifier que le tableau est vide:
arr = new int[0];
if (arr.length == 0) {
System.out.println("array is empty");
}
vous pouvez utiliser yourArray.length
pour rechercher le nombre d'éléments dans un tableau.
Assurez-vous que votre tableau n'est pas null avant d'utiliser yourArray.length
, sinon vous obtiendrez NullPointerException
.
Votre problème est que vous ne testez PAS la longueur du tableau tant qu'il n'est pas trop tard.
Mais je tiens simplement à souligner que la solution du problème consiste à LIRE LA PISTE.
Le message d'exception indiquera clairement que vous essayez de créer un tableau de longueur -1 et la trace vous indiquera exactement quelle ligne de votre code effectue cette opération. Le reste est une simple logique ... pour expliquer pourquoi la longueur que vous utilisez est -1.