Как проверить, пуст ли массив? - программирование
Подтвердить что ты не робот

Как проверить, пуст ли массив?

Я написал программу, где, если набор массивов можно сказать {1, 3, 6, 7, 12}, он вернет свой минимальный разрыв между двумя числами. Другими словами, он сначала найдет различия между 3 и 1, 6 и 3, 7 и 6, а также 12 и 7. После того, как их различия будут достигнуты, он вернет наименьшую разницу, в нашем случае 1, начиная с 6-7 = 1. Например, если нам задан массив {60}, программа вернет 0. Теперь, если у нас есть массив {}, где ничего нет внутри, он также вернет 0. Однако я не могу заставить свою программу возвращать 0! Это исключает. Что я упустил? Как мне решить эту проблему? Вот моя программа:

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;
    }
}

Спасибо заранее!

4b9b3361

Ответ 1

Ваш тест:

if (numberSet.length < 2) {
    return 0;
}

необходимо выполнить, прежде чем выделять массив этой длины в следующем выражении:

int[] differenceArray = new int[numberSet.length-1];

else вы уже создаете массив размером -1, когда numberSet.length = 0. Это довольно странно. Итак, переместите ваш if statement в качестве первого выражения в вашем методе.

Ответ 2

Для проверки массива имеет значение null:

int arr[] = null;
if (arr == null) {
 System.out.println("array is null");
}

Проверить массив пустым:

arr = new int[0];
if (arr.length == 0) {
 System.out.println("array is empty");
}

Ответ 3

вы можете использовать yourArray.length для определения количества элементов в массиве.

Удостоверьтесь, что yourArray не имеет значения null перед тем, как сделать yourArray.length, иначе вы получите NullPointerException.

Ответ 4

Ваша проблема в том, что вы НЕ проверяете длину массива до тех пор, пока не станет слишком поздно.

Но я просто хочу указать, что способ решить эту проблему - ПРОЧИТАТЬ СТЕКЛ. TRACE.

В сообщении об исключении ясно указывается, что вы пытаетесь создать массив длиной -1, и трасса скажет вам, в какой строке этого кода это делается. Остальное - это простая логика... вернувшись к тому, какая длина, которую вы используете, равна -1.