Buenas,
el problema esta en el operador ++, te paso a comentar porque:
cuando se pone el operador después del nombre de la variable lo que sucede internamente cuando itera es lo siguiente:
int contador = 0;
while(contador++<= 10) {
System.out.println(contador);
}
en la ultima vuelta el contador vale 10 y compara con el 10 pero cuando pasa a la siguiente linea de código el valor es 11 y lo imprime.
La salida esperada es 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11.
cuando se pone el operador antes del nombre de la variable lo que sucede internamente cuando itera es lo siguiente:
int contador = 0;
while(++contador<= 10) {
System.out.println(contador);
}
en la ultima vuelta el contador vale 10 pero antes de hacer la comparación le suma 1 entonces quedaria 11 <= 10 no cumple con la condicion y sale del ciclo.
La salida esperada es 1, 2, 3, 4, 5, 6, 7, 8, 9, 10.
Espero haber sido de ayuda y claro con la explicacion. Saludos!!