添加到数组并返回布尔值

时间:2016-03-16 04:20:38

标签: java arrays

我想在数组中添加一个对象,如果数组未满,则返回true,因此可以添加项,如果数组中没有项,则返回false。

我现在所拥有的,我相信只是部分正确。

private Object[] theList;
//constructors omitted
@Override
public boolean add(Object toAdd) {
    for(int i=0; i < theList.length;i++){
        if(toAdd != null){                  
            theList[i] = toAdd; 
        }         
    }
    return true;
}

我认为使用元素计数器将是追踪的正确方法 当前在数组中的元素数量。

如果重要,则从界面覆盖该方法。

不确定它是否根据循环和条件返回true,或者无论如何都返回true。

6 个答案:

答案 0 :(得分:0)

您尚未初始化object[] ObjectArray theList。因此,它无法为此添加新元素。

  

我在这里使用ArrayList类为您的问题提供解决方案。 ArrayList是一个自动可扩展阵列,在运行时动态增加其大小。

 private ArrayList<Object> theList = new ArrayList<>(); //A Auto Growable Array Increased Its Size Dynamically at Runtime.
    //constructors omitted
    @Override
    public boolean add(Object toAdd) {
         if(toAdd != null){                  
            theList.add(toAdd); 
            return true; //returns true id Object is added to theList.
         }else
             return false; //returns false if Object is Null .
    }
  

获取ArrayList大小的代码

theList.size() //Use This Code to know the Size of Array List.

答案 1 :(得分:0)

您好像正在尝试在数组中找到第一个null值,如果存在这样的值,请将其替换为您的toAdd对象并返回true。

该代码的代码如下:

private Object[] theList;

@Override
public boolean add(Object toAdd) {
    for(int i=0; i < theList.length; i++) {
        if(theList[i] == null){                  
            theList[i] = toAdd;

            return true;
        }         
    }

    return false;
}

如果您还希望在false对象为toAdd的情况下返回null,出于性能原因,您应该在循环之前检查阵列:

@Override
public boolean add(Object toAdd) {
    if (toAdd != null) {
        for(int i=0; i < theList.length; i++) {
            if(theList[i] == null){                  
                theList[i] = toAdd;

                return true;
            }         
        }
    }

    return false;
}

显然,使用ArrayList会更方便。

答案 2 :(得分:0)

首先,您必须初始化数组。否则它将返回一个空指针异常。这是我的代码。希望它会有所帮助...

class Demo{
    static boolean result;
    public static void main(String args[]){

        Object ob= new Object();
        result = A.add(ob);

        System.out.println(result);

        Object ob1= new Object();
        result = A.add(ob1);
        System.out.println(result);

    }

}

class A{
    static private Object[] theList = new Object[10];
    public static boolean add(Object ob){
        boolean result = false;
            for(int i=0; i<theList.length; i++){
                if(ob != null){
                    theList[i] = ob;
                    result = true;
                }
            }
        return result;  
    }
}

答案 3 :(得分:0)

对象数组的默认值为null。这样您就可以检查元素是否为空。

for(int i=0:i<theList.length;i++) {
   if(theList[i] == null && toAdd!=null)  // Element is null or not
       theList[i]=toAdd;
       return true;   
}
return false;

如果element为null,则array仍为空,您可以在其中放置值并返回true

答案 4 :(得分:0)

您可能需要考虑使用ArrayList,因为它们是可扩展的,并且没有设置大小。因此,无论何时添加内容,只需增加ArrayList,而不是更改索引的值。

答案 5 :(得分:-1)

根据同行贡献者的建议,第二次编辑,另一个解决方案。我还在评论中发表了对问题的理解。请说明理解是否有任何失常。

请看一个可能的解决方案:

public class TestCode {

public static void main(String[] args) {
    /*
     * Question: 
     * I would like to add an object to an array and 
     * return true if the array is not full so the item can be added, 
     * and false if the array is full of items.
     */
    Object[] objects = new Object [] {1, 2, null, 4, 5, null , 7};
    SomeClass someClass = new SomeClass(objects);
    // just for sake of passing;
    Integer toAdd = 10;
    boolean isNotFull = someClass.add(toAdd);

    System.out.println("Array after adding: "+Arrays.toString(objects));
    System.out.println("Array is Not full:"+isNotFull);

    isNotFull = someClass.add(toAdd);
    System.out.println("Array after adding: "+Arrays.toString(objects));
    System.out.println("Array is Not full:"+isNotFull);

    isNotFull = someClass.add(toAdd);
    System.out.println("Array after adding: "+Arrays.toString(objects));
    System.out.println("Array is Not full:"+isNotFull);



}

}

class SomeClass {
private Object[] theList;
//constructors omitted

public SomeClass(Object[] theList) {
    this.theList = theList; 
}
/*
 * returns true if array is not full and element is inserted.
 */
public boolean add(Object toAdd) {
    int i = 0;
    boolean flag = false; // if flag is true, the array is not empty
    // question says: 
    // "I would like to add an object to an array"
    // means we need to first find an empty slot to insert in the array
    for( ; i < theList.length;i++){
        // to check if there is any first empty space in the array
        // so that the element can be inserted.
        // (finding the empty slot
        if(theList[i] == null){
            // to check if elements passed as an aargument itself is false
            if (toAdd!=null) {
                theList[i] = toAdd;
                break;
            }

        }

    }

    for (;i <theList.length; i++) {
         if(theList[i] == null){
            flag = true;
        }
    }
    return flag;
}
}

<强>解决方案: 我得到的代码输出:

Array after adding: [1, 2, 10, 4, 5, null, 7]
Array is Not full:true
Array after adding: [1, 2, 10, 4, 5, 10, 7]
Array is Not full:false
Array after adding: [1, 2, 10, 4, 5, 10, 7]
Array is Not full:false