Duvida com For encadeado [RESOLVIDO]

Galera to com dúvida no For encadeado pra construir a tabela abaixo:

Imprima a seguinte tabela usando for encadeados:
1
2 4
3 6 9
4 8 12 16
n n2 n3 … n*n

Econtrei aqui no forum o cod abaixo:

public static void main(String[] args) {   
02.  
03.        int n = 4; // número de linhas que queremos imprimir   
04.  
05.        for (int i = 1; i <= n; i++){   
06.            for (int j = 1; j <= i; j++){   
07.                System.out.print((i*j) + " ");   
08.            }  
09.   
10.            System.out.println("");   
11.        }   
12.    }   

Pessoal creio q nao peguei legal a mecânica do for, então pergunto:
Na primeira execução do for na linha 5 o “i” vale 1
Entra na linha 6 e o “for” sera executado apenas 1 vez pq ‘j’ = ‘i’ imprimindo 1 e muda de linha.
ok até ai certo no meu teste de mesa.
Mas dai volta pro for externo linha 5 onde o ‘i’ passa a valer 2
Entra no ‘for’ interno, ‘j’ é incrementado pra 2 e vai executar 1 vez apenas de novo pois ‘j’ = ‘i’ de novo, imprimindo apenas o numero 4
Aqui no meu teste o for interno da linha 6 vai imprimir apenas 1 numero em cada uma das 4 linhas.
Porque ‘i’ e ‘j’ sempre tem o mesmo valor sendo essa a condição pra uma única execução do ‘for’ interno da linha 6
Mas quando rodo o programa forma a tabela direitinho

Olá Rafael.

Seguinte, primeiro tente entender o que o programa faz, reparou que ele imprime os mútiplos de cada linha até chegar no valor determinado de ‘n’.

Depois de entendido o problema fica fácil responder sua pergunta.

O primeiro for representa a quantidade de “linhas”, o segundo for representa a quantidade de “colunas”.

O for de dentro que representa as “colunas”, executa mais que 1 vez por conta da validação “j <= i”, lembre-se que quando sair do for das “colunas” e entrar novamente o J assume o valor 1, ou seja ele é reinicializado, enquanto o i do for externo está sendo iterado, então ele sempre vai executar mais um vez…

Espero ter ajudado.

"lembre-se que quando sair do for das “colunas” e entrar novamente o J assume o valor 1, ou seja ele é reinicializado, enquanto o i do for externo está sendo iterado, então ele sempre vai executar mais um vez…
"

putz cara muito obrigado
era essa minha duvida !!! tinha visto outros post e explicações mas a sua eu entendi !!! really thank’s

Como mencionaram: "lembre-se que quando sair do for das “colunas” e entrar novamente o J assume o valor 1, ou seja ele é reinicializado, enquanto o i do for externo está sendo iterado, então ele sempre vai executar mais um vez… "

Uma outra maneira pra entender também é olhar como funciona o código.

lembrando que o n=4; // numero de linhas para imprimir

for(int i=1; i<= n; i++){
for(int j=1; j<= i; j++){
System.out.print( ( i * j )+ “”);
}
}

Como o i é inicializado com 1, o for entra em 1
i=1 j=1

Na segunda rodada o i vai valer 2 e o j é inicializado com 1 novamente. E assim sucessivamente.

i=2 j=1
i=2 j=2
i=3 j=1
i=3 j=2
i=3 j=3
i=4 j=1
i=4 j=2
i=4 j=3
i=4 j=4

Obs: fazendo a multiplicação no System, os resultados bate.

Entendi deste modo também! Espero que esteja ok o/

1 curtida