如何检查数组是否为空?[已关闭]

2022-09-04 00:47:04

我写了一个程序,如果数组集是{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;
    }
}

提前致谢!


答案 1

要检查数组是否为空:

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

答案 2

您的测试:

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

应该在以下语句中分配该长度的数组之前完成:

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

否则,您已经在创建一个大小数组,当 .这很奇怪。因此,将您作为方法中的第一个语句移动。-1numberSet.length = 0if statement