Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
3
respuestas

Ciclo While

Ciclo While

    int contador = 0;

    while (contador++ <= 10) {         
        System.out.println(contador);
    }

En el código puse el contador adentro de la condición, al ejecutar este código muestra en pantalla hasta el numero 11, a que se debe esto?? No deberia salirse al superar el numero 10?

3 respuestas

el detalle es que daria 10 si empezaras de 0, contando el 0 serian 11 numeros, pero al usar contador++ ya empiezas en 1, y recien ahi empieza los 11 numeros correpondientes por eso da 11no se si me explico seria 0,1,2,3,4,5,6,7,8,9,10 pero 1,2,3,4,5,6,7,8,9,10,11

por eso uso for porque me deja poner la condicion aparte del contador tmb se puede como pones pero teniendo en cuenta ese dato

int contador = 0;

        for(;contador<=10;contador++) {
            System.out.println(contador);
        }

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!!

Gracias Vladimir y Federico por sus respuestas me han sido de mucha ayuda. En cuanto al operador ++, ahora entiendo la diferencia, muchas gracias.