Múltiplos de 3 em laço for

2 respostas
java
A

Exercício listar múltiplos de 3 entre 1 e 100. Alguém me explica porque o código não funciona?

for(int num = 1; num <= 100 && num % 3 == 0; num++) {
	System.out.println(num);
}

Já consegui solucionar, mas tive jogar um if para dar certo.

for(int num = 1; num <= 100; num++) {
	if(num % 3 == 0) {
		System.out.println(num);
	}
}

2 Respostas

J

O teste aplicado dentro do for é a regra de iteração do laço, como o contador do laço é iniciado com valor 1 e 1 não é múltiplo de 3, a condição não é atendida e o laço não faz nenhuma iteração!

Porém quando o teste é feito internamente, a regra do laço fica sendo percorrer os valores de 1 à 100, por isso funciona!

Para manter tudo no laço você poderia fazer da seguinte forma:

for (int num = 3; num <= 100 && num % 3 == 0; num += 3) {
    System.out.println(num);
}
H

o seu primeiro for não da certo por causa da regra do seu for, a primeira parte é criação e atribuição de valores das variáveis, a segunda é o teste logico para parar o for(aqui onde está o problema), a terceira a iteração.
para o número ficar no for ele obrigatoriamente no seu tem que ser menor ou igual a 100 e ser múltiplo de 3, diferente disso ele vai encerrar o for.
o seu for pra dar certo seria.

for(int num = 3; num <= 100; num+=3) {

System.out.println(num);

}

nesse caso que coloquei ele percorre a lista de 3 em 3 e imprime os valores do número 3,6,9, etc.

Criado 16 de abril de 2020
Ultima resposta 18 de abr. de 2020
Respostas 2
Participantes 3