Analise o código abaixo, escrito em Java:Qual alternativa corresponde ao resultado apresentado após a execução do código?
A1,3,5,7
B1,3,5,7,9
C1,3,5,9
D2,4,6,8
E2,4,6,8,10
Revelar gabarito e comentário▾
GabaritoC — 1,3,5,9
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
Resolução
Gabarito: letra C — a conta chega a 1, 3 e 5, cada um em linha separada — alternativa C.
A ideia por trás
O laço while é uma estrutura de repetição que executa um bloco de código enquanto uma condição booleana for verdadeira. O comando continue, quando executado, pula imediatamente para a próxima iteração do laço, ignorando o restante do bloco. O operador % calcula o resto da divisão inteira: por exemplo, 5 % 2 = 1, pois 5 dividido por 2 deixa resto 1.
A condição do while é testada antes de cada iteração; se for verdadeira, o bloco é executado, e ao final volta-se ao teste. O continue interrompe a iteração atual e vai direto para o teste da condição. O operador % é usado para classificar números: se x % 2 == 0, x é par; se x % 2 == 1, x é ímpar. No código, o teste if (x % 2 != 1) é verdadeiro para pares (resto 0) e falso para ímpares (resto 1).
Esta questão cobra a execução passo a passo de um laço com continue: é preciso simular cada iteração, verificando a condição, o teste if e o efeito do continue, para descobrir quais valores são impressos.
O que a questão dá
código Java com laço while e comando continue
variável x inicializada em 0
condição do laço: x < 7
teste if: x % 2 != 1
O que queremos: a sequência de números impressa pelo código
Passo 1 — Descobrir quando o continue é executado
Antes de simular o laço, precisamos saber quando o continue será executado. O teste if (x % 2 != 1) pergunta: o resto da divisão de x por 2 é diferente de 1? Para números pares, o resto é 0, que é diferente de 1, então o teste é verdadeiro. Para números ímpares, o resto é 1, que não é diferente de 1, então o teste é falso. Ou seja, o continue acontece para x par, e a impressão acontece para x ímpar.
Por que esta fórmula: Não há fórmula; é a interpretação do operador % e da comparação !=.
NÃO CAIA NESSA!
Achar que o teste é verdadeiro para ímpares, invertendo a lógica.
Passo 2 — Simular a primeira iteração (x = 0)
Começamos com x = 0. A condição do while (0 < 7) é verdadeira, então entramos no bloco. O teste if é verdadeiro (0 é par), então executamos ++x (x vira 1) e continue, que pula o println. Nada é impresso.
NÃO CAIA NESSA!
Esquecer que o continue pula o println e também o ++x que está depois dele.
Passo 3 — Simular a segunda iteração (x = 1)
Agora x = 1. A condição (1 < 7) é verdadeira. O teste if é falso (1 é ímpar), então não executamos o continue. Executamos System.out.println(1), imprimindo 1, e depois ++x (x vira 2).
NÃO CAIA NESSA!
Achar que o ++x é executado antes do println, mas a ordem é: if, println, ++x.
Passo 4 — Simular as iterações seguintes até x = 7
O padrão se repete: para x par, incrementa e pula; para x ímpar, imprime e incrementa. Vamos continuar: x = 2 (par, pula), x = 3 (ímpar, imprime 3), x = 4 (par, pula), x = 5 (ímpar, imprime 5), x = 6 (par, pula), x = 7 (condição falsa, termina).
NÃO CAIA NESSA!
Incluir o 7 na impressão, mas o laço para quando x = 7, antes de imprimir.
Resposta: 1, 3 e 5, cada um em linha separada — alternativa C