Итак, я пытаюсь получить массив для передачи в отдельный метод, а затем вернуть массив нового размера, но программа имеет только одно неверное значение. Например, у меня есть массив
int [] myInches = {89,12,33,7,72,42,76,49,69,85,61,23};
что я пытаюсь передать в мой метод createLowerArray
public static int [] createLowerArray(int maxParam, int [] myInchesParam) {
int [] betterInches = {0,0,0,0,0,0,0,0,0,0};
int count = 0;
for (int i = 0; i < myInchesParam.length; i++) {
if (myInchesParam[i] < maxParam) {
count++;
}
betterInches = new int [count];
int newCount = 0;
for (int q = 0; q < betterInches.length; q++) {
if (myInchesParam[newCount] < maxParam) {
betterInches[q] = myInchesParam[newCount];
}
newCount++;
}
}
return betterInches;
}
С maxParam просто быть тем, что вводит пользователь. Допустим, они вставили 40, второй метод увидит, что только 4 элемента (12,33,7 и 23) меньше 40 и создаст массив длиной 4 с позицией 0, равной 12, [1] = 33 , [2] = 7 и [3] = 23, но по какой-то причине моя программа делает это так. Позиция 0 в новом массиве равна 0, [1] = 12, [2] = 33 и [3] = 7. Длина верна, но значения не в правильных позициях. Я получил помощь с этим раньше и думал, что у меня есть это, плохо возвращаться так быстро, но я просто не могу понять это. Спасибо всем, кто помогает. Я знаю, что это можно сделать проще с помощью списков, потоков и тому подобного, но мне нужна практика с циклами.
Ожидаемый результат должен быть
int length = 4
[0] = 12
[1] = 33
[2] = 7
[3] = 23
Токовый выход
int length = 4
[0] = 0
[1] = 12
[2] = 33
[3] = 7