English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Neste tutorial, você aprenderá sobre a instrução continue do Java e as instruções marcadas como continue, com a ajuda de exemplos.
Ao lidar com loops, às vezes é necessário pular algumas instruções dentro do loop ou encerrar o loop imediatamente sem verificar a expressão de teste.
Neste caso, serão usadas as instruções break e continue. Para entender a instrução break, acesseJava break.
A instrução continue do Java pula a iteração atual do loop (for, while, do…while, etc.) e o controle do programa é transferido para o final do loop. Em seguida, calcula a expressão de teste do loop.
Para o loop for, a instrução de atualização é executada antes da expressão de teste.
A instrução continue quase sempre está eminstrução if ... elseusada em instruções de decisão. Sua sintaxe é:
continue;
class Test { public static void main(String[] args) { // loop for for (int i = 1; i <= 10; ++i) { //Se o valor de i estiver entre4e9entre if (i > 4 && i < 9) { continue; } System.out.println(i); } } }
Output:
1 2 3 4 9 10
No programa acima, usamos o loop for para imprimir o valor de i em cada iteração. Para entender como o loop for funciona, acesseLoop for Java. Aqui, note as seguintes instruções:
if (i > 5 && i < 9) { continue; }
Isso significa que quando o valor de i for maior que4menor que9Em caso de erro, a função saltará a instrução print dentro do loop. Portanto, saltaremos o valor5、6、7e8saída.
O programa abaixo calcula a soma do5a soma do número de números positivos. Se o usuário inserir um número negativo ou zero, será pulado da computação.
Para aceitar a entrada do usuário, usamos esse objeto Scanner. Para obter mais informações sobre Scanner, acesseJava Scanner.
import java.util.Scanner; class AssignmentOperator { public static void main(String[] args) { Double number, soma = 0.0; //Criar objeto Scanner Scanner input = new Scanner(System.in); for (int i = 1; i < 6; ++i) { System.out.print("Insira um número: "); //Aceitar entrada de dados do tipo double number = input.nextDouble(); //Se number for negativo, pule a iteração if (number <= 0.0) { continue; } soma += number; } System.out.println("Soma = ", + soma); } }
Output:
Insira um número: 2.2 Insira um número: 5.6 Insira um número: 0 Insira um número: -2.4 Insira um número: -3 Soma = 7.8
No programa acima, observe as seguintes linhas:
if (number < 0.0) { continue; }
Isso significa que, quando o usuário inserir um número negativo, a iteração atual do loop será pulada. A próxima iteração começará.
seLoops aninhadosentão, o continue saltará a iteração atual do loop mais interno.
Até agora, usamos a instrução continue sem etiqueta. Ela é usada para encerrar o loop mais interno e as instruções switch. No entanto, há outro tipo de instrução continue em Java, chamada de continue com etiqueta.
Como mostrado na figura acima, usamos o identificador label para especificar o loop externo. Agora, observe como usamos essa instrução continue (continue label;).
Aqui, a instrução continue pula a iteração atual da instrução marcada (ou seja, o loop externo). Em seguida, o controle do programa passa para a próxima iteração da instrução marcada (loop externo).
class LabeledContinue { public static void main(String[] args) { //The outer for loop is labeled as label first: for (int i = 1; i < 6; ++i) { for (int j = 1; j < 5; ++j) { if (i == 3 || j == 2) //Skipping the iteration of the labeled loop (outer for loop) continue first; System.out.println("i = ", + i + "; j = " + j); } } } }
Output:
i = 1; j = 1 i = 2; j = 1 i = 4; j = 1 i = 5; j = 1
In the above example, the current iteration of the loop marked as first is skipped using the labeled continue statement.
if (i ==3 || j ==2) continue first;
Here, we can see that the outermost for loop is marked as first,
first: for (int i = 1; i < 6; ++i) {..}
Therefore, if the value of i is3or the value of j is2and skip the iteration of the outer for loop.
AttentionIt is usually not recommended to use labeled continue, as it makes the code difficult to understand. If you are in a situation where you must use labeled continue, please refactor the code and try to solve it in a different way to make it more readable.