Почему я получаю элементы массива с "0"? (Смотри пасти внутри) - PullRequest
0 голосов
/ 25 января 2010

Привет. Я новичок здесь :) Ну, у меня есть несколько проблем с этой программой: http://pastie.org/private/sfqqnqwxtpgtuhswpqepw

1) Я хочу, чтобы моя программа разбивала массив «input» на наборы oddList, evenList и absoluteList. Тем не менее, при разделении он добавляет группу элементов как «0».

2) 0 нужно добавить только в oddList.

3) Я не могу понять, как добавить среднее значение AverageAndGreater () в конец массива.

Спасибо:)

Ответы [ 2 ]

4 голосов
/ 25 января 2010

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) в качестве четного теста.

1 голос
/ 25 января 2010

Это связано с тем, что длина возвращаемого массива инициализируется равной длине исходного массива как:

int[] oddList = new int[a.length];
...