2
respostas

[Dúvida] divergência no print

Código

package sintaxe_variaveis_e_fluxo;

public class TestaWhile {

    public static void main(String[] args) {
        int contador = 0;

        while(contador < 10){
            // contador = contador (0) + 1. até ele ser menor ou igual a 10.
            contador = contador + 1;

            System.out.println(contador);
        }

    }
}

ao dar print, ele mostra o seguinte no console 1 2 3 4 5 6 7 8 9 10

quando altero o código para:

package sintaxe_variaveis_e_fluxo;

public class TestaWhile {

    public static void main(String[] args) {
        int contador = 0;

        while(contador <=10){
            // contador = contador (0) + 1. até ele ser menor ou igual a 10.
            contador = contador + 1;

            System.out.println(contador);
        }

    }
}

ele me entrega no console:

1 2 3 4 5 6 7 8 9 10 11

2 respostas

Dentro dos parametros do metodo while voce colocou <=10 na ultima iteração do laço o contador que estará com o valor 10 vai receber + 1 entregando o valor de 11 no console.

para ir até 10 retire o = do parametro.

Segue abaixo:

package sintaxe_variaveis_e_fluxo;

public class TestaWhile {

    public static void main(String[] args) {
        int contador = 0;

        while(contador <10){
            // contador = contador (0) + 1. até ele ser menor ou igual a 10.
            contador = contador + 1;

            System.out.println(contador);
        }

    }
}

Fala Lucas, tudo bem?

O que acontece é que no primeiro exemplo contador é incrementado para 1 e, em seguida, é impresso no console, e assim sucessivamente até que contador atinja o valor 10. Já no segundo exemplo, contador é incrementado para 1, depois é impresso no console, e assim sucessivamente até que contador atinja o valor 11 (pois o laço ainda é executado quando contador é igual a 10).

Ou seja, um vai de 1 a 11 e outro de 1 a 10 por conta desse ponto:

contador <=10

vs

contador < 10