Подумайте об использовании ArrayList , который позволит вам добавлять элементы по мере необходимости, увеличивать их по мере необходимости и поддерживать точный счет.
Хотя в этом случае, если вы хотели /необходимо использовать массив, вы можете просто не сохранять значение, если это «0», возможно.(Также не увеличивайте «переменную используемого массива», кроме случаев, когда вы добавляете, так что вы знаете, сколько содержит данных «не 0», или обрабатываете первые «0», встретившиеся во время итерации, как «конец полезных данных» -инициализируется значением по умолчанию типа.)
Если вы хотите перейти от массива с нулями к массиву без нулей вообще, вы должны использовать два прохода - один для подсчета ненулей,создать новый массив соответствующего размера, а затем скопировать ненулевые значения.Это может быть сделано и в обратном порядке (сжатие исходного массива, а затем копирование его «заполненной» части), но это немного сложнее.
Если вы продолжите свой текущий подход (которыймассив результатов будет иметь нули, но в конце) вам нужно поддерживать два указателя индекса - один - итератор основного цикла, второй - следующее место для установки ненулевого значения, который увеличивается только тогда, когда значение копируется (или не перемещается, например, когда оба индекса одинаковы, что будет иметь место до тех пор, пока не встретится первый 0).Удостоверьтесь, что вы обнулили место, из которого вы переместили ненулевое значение.Количество ходов можно уменьшить, если порядок не требуется сохранять.