Помогите решить задачу 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.
я это задание решил с легкостью потом в последующих задания мне надо просто дополнять классы и всё но тут я и застопорился
код я написал но не могу понять почему тесты остальные не проходит вот по этому и решил спросить знатоков.