如何检查数组是否已满,如果未满则添加到数组中?

时间:2019-11-14 21:41:27

标签: java arrays oop if-statement

我有数组。我有一个isFull方法,该方法检查数组是否已满,但是我不知道如何使用它来检查数组是否已满,然后将其添加到数组中,否则不理会添加打电话。

该数组应包含10个元素,然后不再接受。在10个元素之后,它应该“已满”并且不理会任何addSpy调用。

您将如何实施?

public class ConcreteSubject extends AbstractSubject {

    public int arySize;
    private int i = 0;

    private static AbstractSpy[] spies;

    public ConcreteSubject(int a) {
        arySize = a;
        spies = new AbstractSpy[a];
    }

    @Override
    public void addSpy(AbstractSpy spy) {
        if (spies.length < 10) {
            spies[i] = spy;
            System.out.println("spy added at index " + i);
            i++;
        }
    }

    public void isFull() {
        //1
        boolean b = false;

        for (int i = 0; i < spies.length; i++) {
            if (spies[i] == null) {
                b = true;
            }
        }

        if (!b) {
            System.out.println("Array is full");
        } else {
            System.out.println("Array not full");
        }
    }



    public class TestSpies {

        public static void main(String[] args) {

            ConcreteSubject cs = new ConcreteSubject(10);
            AbstractSpy spy = new ConcreteSpy();

            AbstractSpy[] spies = new AbstractSpy[10];

            cs.addSpy(spy);
            cs.addSpy(spy);
            cs.addSpy(spy);

            cs.isFull();

        }
    }

3 个答案:

答案 0 :(得分:2)

最简单的方法是这样:

@Override
public void addSpy(AbstractSpy spy) {
  if (!isFull())
  {
    spies[i] = spy;
    System.out.println("spy added at index " + i);
    i++;
  }
}

要使用该方法,您应该将isFull方法更改为:

public boolean isFull() {


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

  return true;
}

答案 1 :(得分:2)

  1. spies.length < 10不正确。应该是spies.length > 0 && i < spies.length,以确保以下分配spies[i] = spy;始终有效。

  2. void isFull()应该为boolean isFull()。您的实现看起来不错,只需返回bfull是一个棘手的单词,因为从技术上讲,数组始终是“满”的。更好的形容词是populatedfilled

  3. 由于addSpy不会填补空白,而只是在末尾添加一个间谍,因此isFull可以重写为return spies.length == i;

答案 2 :(得分:0)

使用变量跟踪阵列中已填充单元格的数量。并且在将任何内容插入其中之前,请检查填充的单元格的计数是否严格小于数组的大小(显然,您还希望跟踪数组的总大小)。