Oi Marcos, tudo bem?
É como os nossos colegas já disseram. No segundo while, temos como condição, o contador
ser menor ou igual a 100, porém perceba que o que está sendo incrementado a cada execução do laço é o multiplo
, e não o contador
, portanto o contador contador
nunca terá seu valor alterado e por consequência, o laço entra em um loop infinito, sem nunca parar de ser executado.
while (contador <= 100) {
multiplo++;
System.out.println(contador * multiplo);
}
Já vimos como "transformar" um while em um for nessa atividade. Fazer o inverso não é tão diferente, vamos pegar como base o código feito em aula com o for:
for (int multiplicador = 1; multiplicador <= 10; multiplicador++) {
for (int contador = 0; contador <= 10; contador++) {
System.out.print(multiplicador * contador);
System.out.print(" ");
}
System.out.println();
}
Aqui vou mudar "multiplicador" para "multiplo" para que faça mais sentido levando em conta o nome da sua variável
Para começar, antes de criarmos o primeiro while que itera o multiplo
, vamos declarar e inicializar o multiplo
valendo 1, dessa forma o programa não irá imprimir os múltiplos de 0. Depois sim, iremos criar um while que roda até o multiplo
chegar em 10.
public static void main(String[] args) {
int multiplo = 1;
while (multiplo <= 10) {
Agora, faremos a mesma coisa com o segundo while que fará a iteração do contador
. Perceba que declarando o contador
dentro do primeiro while, toda vez que o programa terminar de imprimir todos os múltiplos de um número, conseguimos zerar o contador para que ele já fique pronto para ser calculado pelo próximo múltiplo:
public static void main(String[] args) {
int multiplo = 1;
while (multiplo <= 10) {
int contador = 0;
while (contador <= 10) {
Agora é que acontece a mágica, a cada execução do segundo while, iremos imprimir o resultado de contador * multiplo
e, em seguida, incrementamos o contador
:
public static void main(String[] args) {
int multiplo = 1;
while (multiplo <= 10) {
int contador = 0;
while (contador <= 10) {
System.out.print(contador * multiplo);
System.out.print(" ");
contador++;
}
E por fim, agora que já temos código suficiente para imprimir os múltiplos de pelo menos um número, vamos incrementar o multiplo
. Assim, ao final de cada execução do primeiro while, incrementamos seu valor para que na próxima execução usemos o próximo número na sequência:
public static void main(String[] args) {
int multiplo = 1;
while (multiplo <= 10) {
int contador = 0;
while (contador <= 10) {
System.out.print(contador * multiplo);
System.out.print(" ");
contador++;
}
multiplo++;
System.out.println();
}
}
Testando o código, o resultado deve ser algo similar ao feito em aula com o for:
0 1 2 3 4 5 6 7 8 9 10
0 2 4 6 8 10 12 14 16 18 20
0 3 6 9 12 15 18 21 24 27 30
0 4 8 12 16 20 24 28 32 36 40
0 5 10 15 20 25 30 35 40 45 50
0 6 12 18 24 30 36 42 48 54 60
0 7 14 21 28 35 42 49 56 63 70
0 8 16 24 32 40 48 56 64 72 80
0 9 18 27 36 45 54 63 72 81 90
0 10 20 30 40 50 60 70 80 90 100
Espero ter ajudado, qualquer dúvida é só avisar!
Bons estudos!!