O que é a palavra-chave "Continuar" e como ela funciona em Java?

Vi esta palavra-chave pela primeira vez e estava a pensar se alguém me poderia explicar o que faz.

    Qual é a palavra-chave? Como funciona?
  • quando é usado?
Author: Francesco Menzani, 2008-12-23

10 answers

Uma declaração continue sem um rótulo irá executar de novo a partir da condição o laço mais interior while ou do, e a partir da expressão de actualização do laço mais interior for. É muitas vezes usado para terminar o processamento de um loop e, assim, evitar declarações if profundamente aninhadas. No exemplo a seguir continue irá obter a próxima linha, sem processar a seguinte declaração no loop.

while (getNext(line)) {
  if (line.isEmpty() || line.isComment())
    continue;
  // More code here
}

Com uma legenda, continue irá executar novamente a partir do ciclo com a legenda correspondente, em vez do laço mais interior. Isto pode ser usado para escapar de laços profundamente aninhados, ou simplesmente para clareza.

Às vezes continue também é usado como espaço de substituição, a fim de tornar um corpo de loop vazio mais claro.

for (count = 0; foo.moreData(); count++)
  continue;

A mesma declaração sem legenda também existe em C e c++. O equivalente em Perl é next.

Este tipo de fluxo de controlo não é recomendado, mas se assim o desejar pode também utilizar continue para simular uma forma limitada de goto. No exemplo a seguir o continue irá executar de novo o ciclo for (;;) vazio.

aLoopName: for (;;) {
  // ...
  while (someCondition)
  // ...
    if (otherCondition)
      continue aLoopName;
 388
Author: Diomidis Spinellis, 2015-09-18 15:44:51

continue é mais ou menos como goto. Está familiarizado com break? É mais fácil pensar neles em contraste:

  • break termina o loop (salta para o código abaixo dele).

  • continue termina o resto do processamento do código dentro do loop para a iteração atual, mas continua o ciclo.

 476
Author: Dustin, 2014-12-10 15:35:10
Vejamos um exemplo:
int sum = 0;
for(int i = 1; i <= 100 ; i++){
    if(i % 2 == 0)
         continue;
    sum += i;
}
Isto teria a soma de apenas números ímpares de 1 a 100.
 90
Author: Gant, 2018-02-15 04:34:31

Se você pensa no corpo de um laço como uma sub-rotina, continue é como return. A mesma palavra-chave existe em C, e serve o mesmo propósito. Aqui está um exemplo inventado:

for(int i=0; i < 10; ++i) {
  if (i % 2 == 0) {
    continue;
  }
  System.out.println(i);
}
Isto imprimirá apenas os números ímpares.
 26
Author: Vineet, 2015-09-18 15:14:59

Geralmente, vejo continue (e break) como um aviso de que o código pode usar algum refactoring, especialmente se a declaração de laço while ou for não estiver imediatamente à vista. O mesmo é verdade para return no meio de um método, mas por uma razão ligeiramente diferente.

Como outros já disseram, continue move-se para a próxima iteração do laço, enquanto break move-se para fora do laço envolvente.

Estas podem ser Bombas de tempo de manutenção porque não há ligação imediata entre a continue/break e o laço está continuando/quebrando outro que o contexto; adicione um laço interior ou mova as "entranhas" do laço em um método separado e você tem um efeito oculto do continue/break a falhar.

IMHO, é melhor usá-los como medida de último recurso, e, em seguida, para se certificar de que o seu uso é agrupado firmemente no início ou no fim do loop para que o próximo desenvolvedor possa ver os "limites" do loop em uma tela.

continue, break, e return (exceto o único retorno verdadeiro no final do seu método) todos caem na categoria Geral de "gotos escondidos". Eles colocam o loop e o controle de funções em lugares inesperados, o que eventualmente causa bugs.

 17
Author: Tom Dibble, 2015-09-18 15:17:03

Como já mencionado continue irá ignorar o processamento do código abaixo dele e até ao fim do ciclo. Então, você é movido para a condição do laço e executar a próxima iteração se esta condição ainda se mantém (ou se há uma bandeira, para a condição do laço denotado).

Deve-se destacar que no caso de do - while Você é movido para a condição no fundo depois de um continue, não no início do loop.

É por isso que muitas pessoas não respondem correctamente. o que o seguinte código irá gerar.
    Random r = new Random();
    Set<Integer> aSet= new HashSet<Integer>();
    int anInt;
    do {
        anInt = r.nextInt(10);
        if (anInt % 2 == 0)
            continue;
        System.out.println(anInt);
    } while (aSet.add(anInt));
    System.out.println(aSet);

*Se a sua resposta for que aSet conterá números ímpares apenas 100%... estás enganado!

 4
Author: Konstantinos Chalkias, 2016-05-10 13:49:38

"continuar" em Java significa ir ao fim do ciclo actual, significa: se o compilador vê continuar em um loop ele irá para a próxima iteração

Exemplo: este é um código para imprimir os números ímpares de 1 a 10

O compilador irá ignorar o código de impressão sempre que vir continuar a mover-se para a próxima iteração

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

 4
Author: Ibrahim Hout, 2017-12-19 15:08:33

Considere uma condição de "se". Uma declaração continue executa o que está lá em uma condição e sai da condição, ou seja, salta para a próxima iteração ou condição. Mas uma pausa deixa o laço. Considere o seguinte programa. '

public class ContinueBreak {
    public static void main(String[] args) {
        String[] table={"aa","bb","cc","dd"};
        for(String ss:table){
            if("bb".equals(ss)){
                continue;
            }
            System.out.println(ss);
            if("cc".equals(ss)){
                break;
            }
        }
        System.out.println("Out of the loop.");
    }

}

Vai imprimir: aa cc fora do circuito.

Se utilizar uma interrupção no lugar de continuar(após if.), ele vai apenas imprimir aa e fora do loop .

Se a condição "bb" for igual a ss for satisfeita: Para continuar: vai para iteração seguinte, ou seja, "cc".igual a (ss). Para quebrar: ele sai do loop e imprime "fora do loop. "

 3
Author: phanindravarma, 2016-08-29 16:18:01

Estou um pouco atrasado para a festa, mas ... ..

Vale a pena mencionar que continue é útil para loops vazios onde todo o trabalho é feito na expressão condicional controlando o loop. Por exemplo:
while ((buffer[i++] = readChar()) >= 0)
    continue;

Neste caso, todo o trabalho de ler um carácter e adicioná-lo a buffer é feito na expressão que controla o laço while. A declaração continue serve como um indicador visual de que o laço não precisa de um corpo.

É um pouco mais. óbvio que não o equivalente:
while (...)
{ }

E definitivamente melhor (e mais seguro) estilo de codificação do que usar uma declaração vazia como:

while (...)
    ;
 2
Author: David R Tribble, 2017-12-21 23:38:41

Basicamente em java, continuar é uma declaração. Então a instrução continuar é normalmente usada com os loops para saltar a iteração atual.

Para saber como e quando é usado em java, consulte a ligação abaixo. Tem explicação com exemplo.

Http://www.flowerbrackets.com/continue-java-example/

Espero que ajude !!
 1
Author: Shiva, 2017-10-22 13:38:47