如何添加新的实现



我有两个类。第一个是主体,第二个是它的实施。

第一个

import java.util.Arrays;
public class DecrementingCarousel {
int capacity;
static int[] elements;
int size = 0;
boolean called;
public DecrementingCarousel(int capacity) {
this.capacity = capacity;
elements = new int[capacity];
}
public boolean addElement(int element) {
if (element <= 0 || elements.length == size) {
return false;
}
elements[size++] = element;
return true;
}

public CarouselRun run() {
if (!called) {
elements = Arrays.copyOf(elements, size);
called = true;
return new CarouselRun();
} else {
return null;
}
}
}

public class CarouselRun {
int count = 0;
int[] array = DecrementingCarousel.elements;
public int next() {
if (array.length == 0) {
return -1;
}
if (count == array.length) {
count = 0;
}
while (array[count] == 0) {
count++;
if (count > array.length - 1) {
count = 0;
}
if (isFinished()) {
return -1;
}
}
for (int i = 1; i < array.length; i++) {
if (array[i] == -1) {
break;
}
}
count++;
action(count - 1);
return array[count - 1] + 1;
}
public boolean isFinished() {
int sum = 0;
for (int i = 0; i < array.length; i++) {
sum += array[i];
}

return sum == 0;
}
public void action(int index) {
array[index]--;
}
}

然后我有了一个新课,让我们称之为"Halving Carousel";它扩展了我们的第一类:

public class HalvingCarousel extends DecrementingCarousel {
public HalvingCarousel(final int capacity) {
super(capacity);
}

}

我应该做什么,这样它就不会把元素减少一,而是把它除以2。需要应用正则整数除法,丢弃余数。例如,5/2=2。

通过查看您的代码,可以看出countint的类型。所以,如果你除以二,你会得到想要的结果:

int foo = 5 / 2;
System.out.println(foo); // 2

这是DividingCarousel:的简单示例

public class DecrementingCarousel
{
public int Capacity;
public DecrementingCarousel(int capacity)
{
Capacity = capacity;
Capacity -= 1;
}
}

和:

public class DivideCarousel extends DecrementingCarousel
{
public DivideCarousel(int capacity)
{
super(capacity);
Capacity = capacity / 2;
}
}

最新更新