Exercício+Caelum+Fors Encadeados

Exercício da Apostila de Java Básico da Caelum.

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

1 curtida

Poste o código que fez até agora, ou faça uma pergunta específica.

Prefiro ensinar a pescar a dar o peixe.

1 curtida

[quote=prof.claudia]Exercício da Apostila de Java Básico da Caelum.

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

[/quote]

Consegui:

public static void main(String[] args) {

int n = 4; // número de linhas que queremos imprimir   

for (int i = 1; i <= n; i++){   
    for (int j = 1; j <= i; j++){   
        System.out.print((i*j) + " "); // valor do elemento j na linha i   
    }   
    System.out.println(""); // muda de linha   
}   

}

Olá, bom dia… sou novo por aqui e estou começando a utilizar e aprender Java, sempre foi um grande desafio aprender a programar e estou muito interessado realmente… estou utilizando a apostila do caelum-java e me deparei com um exercício (desafio) acima indicado de lista com for encadeada, onde não entendi o código que foi postado, realmente ele faz o que o exercício pede, porém não entendi como ele… trabalha as linhas e colunas.

Podem indicar também algum livro bom para iniciantes?

Grato.

A melhor maneira de você entender um programa é fazer o que ele faz passo a passo, pode ser tanto debugando o programa numa IDE, ou pegar um lapis e uma caneta, e ir escrevendo cada passo que ele fez, qual o valor das variáveis agora, etc; é conhecido como teste de mesa.

O for externo serve para imprimir tudo que for dentro de uma linha.
O for interno serve para imprimir os números, separados por espaços, como se fossem colunas.

O for externo usa uma variável i que assume durante a vida dela, os valores de 1 até N, um a um.
O for interno usa uma variável j, que assume valores entre 1 e o i declarado acima, ou seja, dira de 1 até 1, 1 até 2, 1 até 3, etc, parando em 1 até N. Ou seja, este for executará N vezes, cada vez imprimindo mais números que a última vez.

Por fim, já fora do laço do for interno, ele imprime uma nova linha, e vai para a próxima iteração do for externo.

1 curtida

Olá, segue abaixo o meu código para a solução dessa questão.

public class forFor {

public static void main(String[] args) {
   
    for (int a = 0; a < 5; a++) {
        for (int b = 1; b <= a; b++) {
            System.out.print(a * b );
        }
        System.out.println("");
    }
}

}

3 curtidas
public static void main(String[] args) { 

 		int n = 4; // número de linhas que queremos imprimir 

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

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

public class Caleum {
public static void main(String[]args){
for(int i=1;i<4;i++){
System.out.println("");
for(int j=1;j<=i;j++){
System.out.print((i*j)+" ");
}
}

}

}

Não entendi a necessidade do da linha abaixo no seu código:

"int n = 4; // número de linhas que queremos imprimir "

eu fiz sem o n e rodou aqui!

class exercicio8{
	public static void main(String[] args){
		//for encadeado
		for (int i = 1; i<5; i++){
			for (int j = 1; j<=i; j++){
				System.out.print(i*j + " ");
			}
		System.out.println(""); // muda de linha   
		}
	}
}

Desenterrando o tópico, rs.

Estou com duvidas neste código e se alguém puder ajudar ficaria grato. Eu estou tentando entender como o código funcionou.

a variável “i”, inicia com 1, a variável “j”, também inicia em “1”.
Após a primeira iteração, “j” passa a valer 2, e “i” também passa a valer 2. Como esse laço consegue imprimir os seguintes valores:

1
2 4
3 6 9
4 8 12 16

O que eu não estou percebendo dentro do segundo for?

Desde já, grato à comunidade.

Ya ja entendi a logica que foi usada isso e que encomodava

Tá aí

public static void main(String[] args) {
    int mult;
	for (int i = 1; i <= 4; i++) {
		for (int j = 1; j <= i; j++) {
			
			mult= i*j;
			System.out.print ((mult)+ " ");
		}
		System.out.println("");
	}

}

}

1 curtida

public class Encadeamento{

public static void main(String[] args){

	int A = 10;
	for (int a = 1;a <= A;a++){
		System.out.print(a + " ");
		int c = a;

		for (int b = 1;b < a;b++){
			System.out.print((c+=a) + " ");
		}

		System.out.println();
	}
}

}

public class ExercicioTabuada {
    public static void main(String[] args) {
        for (int i = 1; i < 1000; i++) {
            for (int j = 1; j <= i; j++) {
                int x = i * j;
                System.out.print(x+" ");
                if (j == i) {
                    System.out.println();
                }
            }
        }
    }
}

//Print table

public class Exercise08 {
public static void main(String[] args) {
int numberLines = 4;

    for(int number = 1; number <= numberLines; number++) {
            for(int index = 1; index <= number; index++) {
                System.out.print(number * index);
            }
            //Skipe a line
            System.out.println("");
    }
}

}