首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检查数组是否为空?

如何检查数组是否为空?
EN

Stack Overflow用户
提问于 2013-02-10 14:26:44
回答 4查看 118.4K关注 0票数 14

我已经写了一个程序,如果数组集合是{1,3,6,7,12},它将返回两个数字之间的最小间隔。换句话说,它将首先找到3和1、6和3、7和6以及12和7之间的差异。在实现它们之间的差异之后,它将返回最小的差异,在我们的例子中是1,因为6-7=1。例如,如果给我们一个{60}的数组集合,程序将返回0。现在,如果我们有一个{}数组集合,其中没有任何内容,它也将返回0。但是,我不能让我的程序返回0!它抛出一个异常。我错过了什么?我该如何解决这个问题?到目前为止我的程序如下:

代码语言:javascript
复制
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;
    }
}

提前感谢!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-02-10 14:28:50

你的测试:

代码语言:javascript
复制
if (numberSet.length < 2) {
    return 0;
}

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

代码语言:javascript
复制
int[] differenceArray = new int[numberSet.length-1];

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

票数 10
EN

Stack Overflow用户

发布于 2013-02-10 14:27:52

检查array is null的步骤:

代码语言:javascript
复制
int arr[] = null;
if (arr == null) {
 System.out.println("array is null");
}

检查array是否为空:

代码语言:javascript
复制
arr = new int[0];
if (arr.length == 0) {
 System.out.println("array is empty");
}
票数 13
EN

Stack Overflow用户

发布于 2013-02-10 14:27:59

您可以使用yourArray.length来查找数组中的元素数。

在执行yourArray.length之前,请确保yourArray不为空,否则将以NullPointerException结束。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14795303

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档