Piccolo appunto :

i cicli for => cicli determintai
i cicli while => cicli indeterminati

se devi ciclare da 0 a n usa sempre il for, e' piu' corretto e ti evita i problemi che hai avuto.

se invece devi ciclare per x (x con x incognito e magari dipendete dal verificarsi di alcune condizioni che ignori prima di avviare il ciclo) usi il while.