1) Ваш массив длиннее, чем его содержимое, так как массив имеет фиксированную длину, эти дополнительные пятна должны содержать что-то, что равно 0.
2) Вы должны добавить 0 к четному списку, если это возможно, потому что тест на четность (x%2==0)
возвращает true для 0.
3) Вы должны создать массив на один больше, чем вам действительно нужно int[] oddList = new int[a.length+1];
и использовать array[array.length-1] = averageAndGreater(input2);
Простейшим способом получить массив правильного размера, вероятно, будет использование класса ArrayList, встроенного в Java. Вы также можете переделать массив в конце метода, когда вы знаете, как долго он должен быть. Как следующее:
int array = new int[total];
for (int i=0; i<total; ++i) {
array[i] = oddList[i];
}
return array;
Edit:
Ваши четные и нечетные списки будут содержать отрицательные числа, не уверенные, было ли это намеренно или нет, но для отклонения их используйте ((a[i] % 2 == 0) && a[i] >= 0)
в качестве четного теста.