Помогите решить задачу Java GraduallyDecreasingCarousel

ыла задача создать подкласс Gradually Decreasing Carousel который. должен уменьшать элементы путем постепенного увеличения уменьшения. Когда вам нужно уменьшить элемент в первый раз, уменьшите его на 1. В следующий раз, когда вам нужно уменьшить тот же элемент, уменьшите его на 2. Далее уменьшите его на 3, затем на 4 и так далее. Вы не должны продолжать уменьшение с неположительными элементами.

всего 3 подкласса есть в этой задачи. моё решение.

package com.epam.rd.autotasks;

public class DecrementingCarousel {
private final int capacity;
static int[] carousel;
int index;
boolean isRun;

{
index = 0;
isRun = false;
}

public DecrementingCarousel(int capacity) {
this.capacity = capacity;
carousel = new int[capacity];
}

public boolean addElement(int element){
if (element > 0 && index < capacity && !isRun) {
carousel[index++] = element;
return true;
}
return false;
}

public CarouselRun run() {
if (!isRun) {
isRun = true;
return new CarouselRun();
}
return null;
}
}
package com.epam.rd.autotasks;

public class CarouselRun {
protected final int[] array = DecrementingCarousel.carousel.clone();
protected int position = 0;

public int next() {
if (isFinished())
return -1;
else {
while (array[position %= array.length] <= 0) {
position++;
}
}
return array[position++]--;
}

public boolean isFinished() {
for (int el : array)
if (el > 0)
return false;
return true;
}
}
package com.epam.rd.autotasks;

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

@Override
public CarouselRun run() {
if (!isRun) {
isRun = true;
return new GraduallyDecreasingCarouselRun();
}
return null;
}
}

class GraduallyDecreasingCarouselRun extends CarouselRun {
int decrement = 1;

@Override
public int next() {
int beforeDecreasing;
if (isFinished())
return -1;
else {
while (array[position %= array.length] <= 0) {
position++;
if (position == array.length) {
decrement++;
}
}
}
beforeDecreasing = array[position];
array[position++] -= decrement;
return beforeDecreasing;
}
}

без 3 этих классов задачу не решить. Когда запускаю тест он не проходит и пишет такие ошибки:Failures:

Дополнен 1 день назад ошибки [ERROR] `

GraduallyDecreasingCarouselRunRandomTest.testCarouselRunWhileNotFinished:47 expected: <[8, 4, 5, 5, 5, 7, 9, 9, 10, 4, 8, 4, 3, 5, 3, 7, 3, 4, 4, 4, 6, 8, 8, 9, 3, 7, 3, 2, 4, 2, 5, 1, 2, 2, 2, 4, 6, 6, 7, 1, 5, 1, 2, 2, 1, 3, 3, 4, 2]> but was: <[8, 4, 5, 5, 5, 7, 9, 9, 10, 4, 8, 4, 3, 5, 3, 7, 3, 4, 4, 4, 6, 8, 8, 9, 3, 7, 3, 2, 4, 2, 6, 2, 3, 3, 3, 5, 7, 7, 8, 2, 6, 2, 1, 3, 1, 5, 1, 2, 2, 2, 4, 6, 6, 7, 1, 5, 1, 2, 4, 1, 1, 1, 3, 5, 5, 6, 4, 1, 2, 1, 3, 3, 4, 2, 1]>

[ERROR] GraduallyDecreasingCarouselRunRandomTest.testCarouselRunWhileNotNegative:69 expected: <[9, 1, 10, 6, 9, 1, 3, 4, 7, 4, 8, 9, 5, 8, 2, 3, 6, 3, 6, 7, 3, 6, 1, 4, 1, 3, 4, 3, 1]> but was: <[9, 1, 10, 6, 9, 1, 3, 4, 7, 4, 8, 9, 5, 8, 2, 3, 6, 3, 7, 8, 4, 7, 1, 2, 5, 2, 6, 7, 3, 6, 1, 4, 1, 5, 6, 2, 5, 3, 4, 5, 1, 4, 2, 2, 3, 2]>

сами тесты - https://pastebin.com/3sLNr2i9 в этом и проблема я пытаюсь сам понять и объяснить чтоб мне помогли само задание таково :

В этом задании вам нужно расширить DecrementingCarousel. Для этого реализуйте GraduallyDecreasingCarousel. Этот подкласс должен уменьшать элементы путем постепенного увеличения уменьшения. Когда вам нужно уменьшить элемент в первый раз, уменьшите его на 1. В следующий раз, когда вам нужно уменьшить тот же элемент, уменьшите его на 2. Далее уменьшите его на 3, затем на 4 и так далее. Вы не должны продолжать уменьшение с неположительными элементами.

изначально всё было так -

DecrementingCarousel контейнер, принимающий элементы int. DecrementingCarousel имеет максимальную вместимость, указанную в конструкторе. При создании DecrementingCarousel находится в состоянии накопления: вы можете добавлять элементы с помощью метода addElement и создать объект CarouselRun с помощью метода run. После вызова метода run DecrementingCarousel находится в рабочем состоянии: он отказывается добавлять дополнительные элементы. CarouselRun позволяет перебирать элементы карусели, уменьшая их один за другим с помощью метода next.

я это задание решил с легкостью потом в последующих задания мне надо просто дополнять классы и всё но тут я и застопорился

код я написал но не могу понять почему тесты остальные не проходит вот по этому и решил спросить знатоков.


Ответы (0 шт):