如何确定我的数组是否为空

时间:2015-10-29 13:58:54

标签: java arrays primitive-types

我需要帮助来检查我的阵列是否已满或者我是否可以在那里放得更多。我想我可以通过执行以下操作来检查其中一个位置是否为空:

    for (int i =0; i <array.length; i++){
        if(array[i] == null){
            return false;
        }else{
            return true;
        }
    }

为了测试这个我用int创建了am数组并得到了错误: 对于参数类型int,null,运算符==未定义 还有另外一种方法吗? 在我的原始任务中,我将使用对象而不是int来执行此操作,这是否意味着它将与对象一起使用而不是使用int?

5 个答案:

答案 0 :(得分:5)

原始类型不能是null,这就是为什么不起作用的原因。使用对象,它将起作用。在这种情况下,您可以使用以下代码:

public boolean isArrayFull(Integer[] array) {
    for (Integer i = 0; i < array.length; i++) {
        if (array[i] == null) {
            return false;
        }
    }
    return true;
}

这也修复了代码中的错误。如果第一个元素不为null,则代码将返回true。

答案 1 :(得分:1)

Java数组中没有“空”元素。

因此,如果它是一个Object数组,您将使用“== null”

进行测试

但是如果它是一个基本类型的数组而你没有为该位置分配任何东西,那么它将具有零值。

因此,除非您确定0永远不会是“有效”值,否则您不能只在数组中插入“空”位置。

请参阅:https://stackoverflow.com/a/286167/4088809

答案 2 :(得分:1)

Theres是你的答案的另一个问题。

How to check if array indexes are empty and if so check the next?  答案是:

 for(int i=0;i<newData.length;i++)
    {
        if(newData[i]==0)
            System.out.println("The value at " + i + "is empty");
    }

针对您的代码进行了优化(我认为您希望使用像isArrayFilles这样的方法):

 for(int i=0;i<newData.length;i++)
    {
        if(newData[i]==0)
            return false;
    }

return true;

答案 3 :(得分:1)

尝试将数组声明为对象而不是传统数组。 EX:

Object array[] = new Object[size];

答案 4 :(得分:-2)

if(array.length == 0){
    //array is empty
}

应该足够了