Ma

length

conterrà sempre e comunque 10 e non il numero effettivo di valori inseriti, che tu restituisci con

return i;