1
resposta

Minha resposta

public class Programa {

public static void main(String[] args) {
    for (int contador = 0; contador <= 10; contador++) {
        System.out.println(contador);
    }
}

}

Gostaria de saber se esta seria a melhor forma, ou até mesmo usando um Do While.

1 resposta

Camila, boa tarde! Tudo bem?

Geralmente um for tradicional é utilizado para você iterar sobre um array/coleção na qual precisa, por algum motivo, identificar o índice do item, por exemplo:

public static void main(String[] args) {

        String[] nomes = new String[5];

        nomes[0] = "Nome 0";
        nomes[1] = "Nome 1";

        for(int contador = 0; contador < nomes.length; contador ++) {
            String nome = nomes[contador];
            System.out.println(nome);
        }

    }

Caso não seja necessário utilizar o índice do item, você pode escrever o for de outra maneira:

public static void main(String[] args) {

        String[] nomes = new String[5];

        nomes[0] = "Nome 0";
        nomes[1] = "Nome 1";

        for(String nome : nomes) {
            System.out.println(nome);
        }

    }

Observe que alcançamos o mesmo objetivo, mas de forma menos verbosa, temos um código mais enxuto.

Bom! Comentando um pouco sobre o "do while" e também sobre o "while", você ira utiliza-los apenas quando precisar verificar alguma outra condição no loop em execução. Perceba que temos dois recursos do java ok?

Pimeiro o "WHILE":

public static void main(String[] args) {

        String[] nomes = new String[5];

        nomes[0] = "Nome 0";
        nomes[1] = "Nome 1";

        int contador = 0;
        while(contador < nomes.length) {
            System.out.println(nomes[contador]);
            contador++;
        }

    }

Atenção para a condição passado ao "while". Se você informar uma condição que nunca será verdadeira, o loop não será executado:

public static void main(String[] args) {

        String[] nomes = new String[5];

        nomes[0] = "Nome 0";
        nomes[1] = "Nome 1";

        int contador = 0;
        while(contador < 0) {
            System.out.println(nomes[contador]);
            contador++;
        }

    }

Nesse caso, iniciamos o contador = 0, em seguida, verificamos se contador é menor que zero, como não é, a condição retorna false logo de inicio e o loop não será executado nenhuma vez.

Diferentemente do "DO WHILE", que primeiro executa o bloco de instruções, e somente depois verifica a condição:

public static void main(String[] args) {

        String[] nomes = new String[5];

        nomes[0] = "Nome 0";
        nomes[1] = "Nome 1";

        int contador = 0;
        do {
            System.out.println(nomes[contador]);
            contador++;
        } while(contador < 0);

    }

Aqui a condição também nunca irá retornar true, mas perceba que no console tivemos a saída: "Nome 0". Isso acontece porque o bloco de instruções sempre é executado ao menos uma vez, para que então a condição seja verificada.

Um caso pior, seria informar uma condição que returna true infinitamente. Vou usar o While para explicar essa situação...

public static void main(String[] args) {

        String[] nomes = new String[5];

        nomes[0] = "Nome 0";
        nomes[1] = "Nome 1";

        int contador = 0;
        while(contador < 10) {
            System.out.println(nomes[contador]);
            // contador++;
        }

    }

Para esse caso eu comentei a linha que incrementa o contador, ou seja, o mesmo nunca chegará a 10, a verificação a ser feita irá retornar sempre true, ou seja, infinitamente o contador será menor que 10 e o loop não chegará ao fim, ou em algum momento, teremos o famoso... "StackOverflow"

Podemos dizer que, o While significa: Enquanto (condição for verdadeira) execute...

E Do While, significa: Execute... Enquanto(condição for verdadeira)

Espero ter ajudado ;)