web-dev-qa-db-fra.com

Comment vérifier si un tableau est vide?

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!

14
user1029481

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.

10
Rohit Jain

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");
}
13
Achintya Jha

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.

2
kosa

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.

1
Stephen C