【发布时间】:2020-03-11 00:18:03
【问题描述】:
我有数组。我有一个isFull 方法,它检查数组是否已满,但我不知道如何使用它来检查它是否已满,如果未满则添加到数组中,否则忽略 add 调用。
数组应该有 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();
}
}
【问题讨论】:
-
问题不清楚
-
您可能想更改为
public boolean isFull()以便可以调用if (!cs.isFull())cs.addSpy(spy);` 如果您尝试在cs.addSpy()已满时调用它可能会引发异常。另外,建议使用有意义的名称boolean isFull = false; -
在 addSpy 定义中,您可以通过与数组的最大大小(上述类中的 arySize)比较而不是与 10 比较来检查数组的大小是否已满。此外,您可以使用静态计数器此类中的变量,可用于在添加时与数组的最大大小(arySize)进行比较。如果该计数器小于或等于最大大小,则可以添加到数组中。每次向数组中添加元素时,都需要向该计数器添加 1。
-
这是一种需要使用数组的练习吗?我问是因为……你为什么不使用可以按需增长的
List<AbstractSpy>? -
更改 isFull 方法的签名以返回布尔值。在 addSpy 方法的开头调用
isFull方法。类似:if isFull() return;。还在b = true之后的isFull中添加break
标签: java arrays oop if-statement