如何判断我的数组是否为空

问题描述 投票:0回答:6

我需要帮助来检查我的数组是否已满,或者是否可以在其中容纳更多内容。我想我可以通过执行以下操作来检查是否只有一个职位是空的:

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

为了测试这个,我创建了一个带有 int 的数组并得到了错误: 对于参数类型 int、null,运算符 == 未定义 我还有其他方法可以做到这一点吗? 在我最初的任务中,我将使用对象而不是 int 来执行此操作,这是否意味着它可以使用对象而不是 int ?

java arrays primitive-types
6个回答
5
投票

原始类型不能是

null
,这就是为什么它不起作用。有了对象,它就会起作用。在这种情况下,您可以使用以下代码:

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

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


1
投票

Java 数组中不存在“空”元素。

因此,如果它是一个对象数组,您将使用“== null”进行测试

但是如果它是一个基本类型的数组并且您没有向该位置分配任何内容,那么它将具有值零。

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

参见:https://stackoverflow.com/a/286167/4088809


1
投票

还有另一个问题可以解答您的问题。

如何检查数组索引是否为空,如果是则检查下一个? 答案是:

 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;

1
投票

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

Object array[] = new Object[size];

0
投票

您想要的解决方案可能如下。该方法返回具有 EMPTY 值的项目的索引。如果索引 -1 表示数组已“满”。

public class Foo {
    public static final int EMPTY = -10000;   // assume the array will never store -10000 as item 

    public static int findEmptyIndex( int[] array ) {
        for ( int i = 0; i < array.length; i++ ){
            if( array[i] == EMPTY ){
                return i;
            }
        }
        return -1;
    }

    public static boolean storeValue( int[] array, int value ) {
       int avail = findEmptyIndex( array );
       if( avail > -1 ) {
           array[ avail ] = value;
           return true;   // succeed
       }
       return false;     // failed
    }

    public static void main( String[] args) {
       int[] array = new int[10];
       for ( int i = 0; i < array.length; i++ ) {
          array[i] = EMPTY;
       }

       // after some times ...

       // to find available place and store value
       if( !storeValue( array, 199 ) ) {
           System.out.println("Value not stored, array's full");
       }
    }
}    

数组在使用前应初始化为 EMPTY,以便该方法可以通过与 EMPTY 进行比较来进行检查。


-1
投票
if(array.length == 0){
    //array is empty
}

应该够了

© www.soinside.com 2019 - 2024. All rights reserved.