Atualizado: 12/07/2025

Este conteúdo é original e não foi gerado por inteligência artificial.

Estruturas de Repetição em Java

As estruturas de repetição (também chamadas de laços ou loops) são construções fundamentais em linguagens de programação. Elas permitem que um bloco de código seja executado repetidamente enquanto uma condição for verdadeira.

Em Java, existem três formas principais de laços:

  • for
  • while
  • do...while

Laço for

A estrutura do for segue o seguinte formato:

for ([inicialização]; [condição]; [atualização]) {
    // bloco a ser executado
}

Exemplo clássico:

for (int i = 1; i < 9; i++) {
    System.out.printf("O quadrado de %d é %d\n", i, i * i);
}

Neste caso:

  • A inicialização int i = 1 cria e define o valor inicial do contador.
  • A condição i < 9 determina se o laço continuará ou não.
  • A atualização i++ incrementa o contador após cada iteração.

O laço será executado enquanto i for menor que 9. Nesse exemplo, ele executa 8 vezes, com i variando de 1 a 8.

Omissão de partes no for

Os três componentes (inicialização, condição, atualização) são tecnicamente opcionais:

int i = 1;
for (;;) {
    System.out.printf("O quadrado de %d é %d\n", i, i * i);
}

Esse é um laço infinito, pois não há condição que o interrompa.

Também é possível omitir apenas alguns elementos:

int i = 1;
for (; i < 9;) {
    System.out.printf("O quadrado de %d é %d\n", i, i * i);
    i++;
}

Esse exemplo é equivalente ao primeiro, mas o contador é inicializado fora do cabeçalho e incrementado dentro do corpo do laço.

Múltiplas variáveis no for

É possível declarar e atualizar mais de uma variável dentro do for:

int n = 10;
for (int i = 0, j = n - 1; i < j; i++, j--) {
    System.out.println(i * j);
}

Neste exemplo, duas variáveis (i e j) são manipuladas em direções opostas até se encontrarem.

Laço do...while

O do...while executa o bloco antes de verificar a condição:

int j = 7;
do {
    System.out.println(j);
    j--;
} while (j > 0);

Esse laço será executado 7 vezes. A principal característica do do...while é que o corpo sempre é executado pelo menos uma vez, independentemente da condição.

Por exemplo:

int j = -1;
do {
    System.out.println(j);
    j--;
} while (j > 0);

Mesmo que j comece negativo, o bloco será executado uma vez antes da verificação.

Laço while

O while verifica a condição antes de executar o bloco:

int j = 6;
while (j > 0) {
    System.out.println(j);
    j--;
}

Esse laço será executado enquanto a condição j > 0 for verdadeira. Se a condição for falsa logo na primeira verificação, o bloco não será executado nenhuma vez.

Instruções break e continue

break

A instrução break interrompe o laço imediatamente, independentemente da condição:

for (int i = 0; i < 10; i++) {
    if (i == 5) {
        break;
    }
    System.out.println(i);
}

Nesse caso, o laço é interrompido quando i chega a 5. O console exibirá os valores de 0 a 4.

continue

A instrução continue interrompe a iteração atual e inicia a próxima, ignorando o restante do bloco.

for (int i = 0; i < 10; i++) {
    if (i == 5)
        continue;
    System.out.println(i);
}

Quando i for igual a 5, a linha System.out.println(i) será ignorada, e o laço continuará normalmente. O número 5 será pulado na saída.

📝 Exercícios

Tarefa 1

Qual é o último valor exibido por este código? E por quê?

public class Program {
    public static void main(String[] args) {
        int i = 3;
        while (i != 0) {
            System.out.println(i--);
        }
    }
}
Resposta

O último valor impresso será 1. A variável i começa em 3 e é decrementada a cada iteração. O loop para quando i se torna zero, então os valores impressos serão:

3
2
1

Tarefa 2

Quais valores são exibidos pelos dois blocos a seguir? Eles produzem os mesmos resultados?

Código 1:

int i = 0;
while (++i < 5) {
    System.out.println(i);
}

Código 2:

int i = 0;
while (i++ < 5) {
    System.out.println(i);
}
Resposta

No primeiro caso (++i), os valores impressos são:

1
2
3
4

No segundo caso (i++), os valores impressos são:

1
2
3
4
5

Isso ocorre porque no primeiro exemplo o incremento acontece antes da comparação, e no segundo, depois.

Tarefa 3

Os dois for abaixo imprimem os mesmos valores?

Código 1:

for (int i = 0; i < 5; i++) {
    System.out.println(i);
}

Código 2:

for (int i = 0; i < 5; ++i) {
    System.out.println(i);
}
Resposta

Sim, ambos imprimem de 0 a 4. O incremento i++ ou ++i é executado após o corpo do laço, e nesse contexto, a diferença entre prefixo e pós-fixo não afeta o resultado.

Tarefa 4

Escreva um laço que imprima apenas os números pares de 2 a 10.

Resposta
for (int i = 2; i <= 10; i++) {
    if (i % 2 == 0) {
        System.out.println(i);
    }
}

Tarefa 5

Transforme este for em um laço while mantendo o mesmo resultado.

for (int i = 0; i < 3; i++) {
    System.out.println("Número " + i + "!");
}
Resposta
int i = 0;
while (i < 3) {
    System.out.println("Número " + i + "!");
    i++;
}

Tarefa 6

Escreva um programa que solicite repetidamente um número maior que 100. O loop deve parar se o usuário cancelar ou deixar a entrada vazia.

Resposta
import java.util.Scanner;

public class Program {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String input;
        int number;

        do {
            System.out.print("Digite um número maior que 100: ");
            input = in.nextLine();
            if (input.isEmpty()) break;
            number = Integer.parseInt(input);
        } while (number <= 100);

        in.close();
    }
}

Tarefa 7

Escreva um programa que exiba todos os números primos de 2 até n. O valor de n pode ser uma constante no código.

Resposta
public class Program {
    public static void main(String[] args) {
        int n = 10;

        for (int i = 2; i <= n; i++) {
            boolean prime = true;

            for (int j = 2; j < i; j++) {
                if (i % j == 0) {
                    prime = false;
                    break;
                }
            }

            if (prime) {
                System.out.println(i);
            }
        }
    }
}
Política de Privacidade

Copyright © www.programicio.com Todos os direitos reservados

É proibida a reprodução do conteúdo desta página sem autorização prévia do autor.

Contato: programicio@gmail.com