Тема: Програма "Зменшення елементів массиву" повертає неіснуюче значення
Клас містить у собі метод який має зменшувати елементи массиву: в перший раз метод має зменшити елемент на 0, в другий раз на 1, третій раз на 2 і так далі. Елементи в массиві які мають значення 0 або меньше метод має пропускати. Коли в массиві вже немає значень більше 0, метод має повернути "-1", але в мому випадку метод продовжує працювати і повертає числа по типу 2147450883. Я не можу зрозуміти чого.
Сам клас є наслідником класу CarouselRun, який зменшує елементи массиву на 1 поки усі значення не будуть рівні 0. Масив ми отримуємо із класу DecrementalCarousel.
Мій код:
package com.epam.rd.autotasks;
public class GradDecrRun extends CarouselRun{
int position = 0;
int[] arr = GraduallyDecreasingCarousel.carousel;
int decremental = 0;
@Override
public int next() {
for (int j : arr) {
if (j > 0) {
if (position >= arr.length) {
position = 0;
decremental++;
}
while (arr[position] - decremental <= 0) {
arr[position] = arr[position] - decremental;
position++;
if (position >= arr.length) {
position = 0;
decremental++;
}
}
arr[position] = arr[position] - decremental;
return arr[position++];
}
}
return -1;
}
@Override
public boolean isFinished() {
int sum = 0;
for (int j : arr) {
if (j > 0) {
return false;
}
}
DecrementingCarousel.acces = 1;
return true;
}
}
Як виглядає метод main:
public class Main {
public static void main(String[] args) {
DecrementingCarousel carousel = new GraduallyDecreasingCarousel(7);
carousel.addElement(20);
carousel.addElement(30);
carousel.addElement(10);
CarouselRun run = carousel.run();
System.out.println(run.isFinished()); //false
System.out.println(run.next()); //20
System.out.println(run.next()); //30
System.out.println(run.next()); //10
System.out.println(">>>>>>>>>>");
System.out.println(run.next()); //19
System.out.println(run.next()); //29
System.out.println(run.next()); //9
System.out.println(">>>>>>>>>>");
System.out.println(run.next()); //17
System.out.println(run.next()); //27
System.out.println(run.next()); //7
System.out.println(">>>>>>>>>>");
System.out.println(run.next()); //14
System.out.println(run.next()); //24
System.out.println(run.next()); //4
System.out.println(">>>>>>>>>>");
System.out.println(run.next()); //10
System.out.println(run.next()); //20
System.out.println(">>>>>>>>>>");
System.out.println(run.next()); //5
System.out.println(run.next()); //15
System.out.println(">>>>>>>>>>");
System.out.println(run.next()); //9
System.out.println(">>>>>>>>>>");
System.out.println(run.next()); //2
System.out.println(run.isFinished()); //true
System.out.println(run.next()); //-1
//На моменті коли метод має повернути -1, повертає 2147450883, або інше подібне число, в різних тестах по різному
}
}