W3docs

Instrução continue em Java

Pule o restante da iteração atual do loop em Java com a instrução continue, incluindo continue com rótulos.

continue é o primo mais leve do break. Enquanto break diz pare o loop completamente, continue diz pule o restante desta iteração e comece a próxima. O loop continua executando.

Esta página aborda como continue retoma cada tipo de loop, a armadilha do loop infinito em loops while, como usá-lo para filtrar elementos, quando preferi-lo a um if invertido e como ele afeta apenas o loop mais interno.

Uso básico

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

Saída:

0
1
3
4

Quando i == 2, continue pula diretamente para o passo de atualização do loop (i++), ignorando o println. O loop então reavalia sua condição e prossegue com i == 3.

Como os loops retomam

O comportamento depende do tipo de loop:

  • for — executa a expressão de atualização e, em seguida, verifica a condição
  • while — verifica a condição imediatamente
  • do/while — verifica a condição imediatamente (no final do loop)
  • for aprimorado — move para o próximo elemento

Um continue em um while que esquece de avançar o estado pode rapidamente se tornar um loop infinito:

int i = 0;
while (i < 5) {
  if (i == 2) {
    continue;     // i never advances — infinite loop!
  }
  System.out.println(i);
  i++;
}

Este é um erro clássico. Incremente antes do continue ou use um loop for para que o passo de atualização seja executado automaticamente.

Filtrando elementos

O uso mais comum de continue é "pular os elementos que não me interessam":

int[] nums = {3, 7, 2, 8, 5, 4};

for (int n : nums) {
  if (n % 2 != 0) {
    continue;          // skip odd numbers
  }
  System.out.println(n);
}

Saída: 2 8 4.

continue vs. inversão da condição

Muitas vezes você pode reescrever um continue como um if que envolve o restante do corpo:

for (int n : nums) {
  if (n % 2 == 0) {
    System.out.println(n);
  }
}

Funcionalmente idêntico. A preferência é uma questão de estilo:

  • Use continue quando houver múltiplas condições de pulo; uma série de verificações antecipadas é mais plana do que ifs profundamente aninhados.
  • Use um if envolvente quando a condição de pulo é simples e o corpo é curto.
// continue style — easy to add another skip condition
for (User u : users) {
  if (u == null) continue;
  if (!u.isActive()) continue;
  if (u.isBanned()) continue;
  process(u);
}

continue ignora apenas um nível

Assim como break, continue afeta apenas o loop mais interno que o envolve:

for (int i = 0; i < 3; i++) {
  for (int j = 0; j < 3; j++) {
    if (j == 1) continue;     // only skips inner iteration
    System.out.println(i + "," + j);
  }
}

Saída:

0,0
0,2
1,0
1,2
2,0
2,2

Para usar continue no loop externo a partir do loop interno, utilize um continue com rótulo — abordado em instruções com rótulo.

Um exemplo prático

java— editable, runs on the server

O que vem a seguir

Quando você combina loops for, obtém loops aninhados — a base para trabalhar com grades, tabelas e arrays bidimensionais.

Prática

Prática
O que este loop imprime? for (int i = 0; i < 5; i++) { if (i == 2) continue; System.out.print(i); }
O que este loop imprime? for (int i = 0; i < 5; i++) { if (i == 2) continue; System.out.print(i); }
Was this page helpful?