Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Estou com dificuldade para entender laços encadeados

Eu vi a aula, entendi, mas depois quando vou fazer me perco kkk estava fazendo um teste para entender melhor e fiz isso

public static void main(String[] args) {

        for(int linha = 0; linha < 10; linha++ ) {
            for(int coluna = 0; coluna < 10 ; coluna++ ) {     
                System.out.print(linha*coluna);
                }


            System.out.println(); 
        }

    }

}

e o resultado no console foi:

0000000000
0123456789
024681012141618
0369121518212427
04812162024283236
051015202530354045
061218243036424854
071421283542495663
081624324048566472
091827364554637281

Da onde saiu esse 0 do inicio? Não estou entendendo muito bem a lógica, alguém me ajuda por favor?

4 respostas
solução!

No primeiro espaço do for você coloca por qual número quer que comece, você colocou 0, por isso aparecem esses 0, para não aparecer o 0 basta mudar para 1.

Não sei se percebeu, mas também está indo só até o 9, ao invés de colocar linha < 10, coloque linha <=10.

public static void main(String[] args) {

        for(int linha = 1; linha <= 10; linha++ ) {
            for(int coluna = 1; coluna <= 10 ; coluna++ ) {     
                System.out.print(linha*coluna);
                }


            System.out.println(); 
        }

    }

}

Para ficar melhor você também pode colocar

System.out.print(" ");

em baixo do

System.out.print(linha*coluna);

Código completo:

public static void main(String[] args) {

        for(int linha = 1; linha <= 10; linha++ ) {
            for(int coluna = 1; coluna <= 10 ; coluna++ ) {     
                System.out.print(linha*coluna);
        System.out.print(" ");
                }


            System.out.println(); 
        }

    }

}

Não sei se ficou claro, mas tentei ajudar. XD

Boa noite Julia, tudo bem? Vou tentar complementar a abordagem do colega Cesar, uma vez que vc indicou que está com dificuldade de entender a lógica. Primeiro recomendo que se vc já estiver usando o eclipse procure usar a opção de debug, para acompanhar a execução do seu algoritimo. Irei tentar simular a execução do começo do seu código e a partir dai ele segue igual.

Seu código:

public static void main(String[] args) {

        for(int linha = 0; linha < 10; linha++ ) {
            for(int coluna = 0; coluna < 10 ; coluna++ ) {     
                System.out.print(linha*coluna);
                }


            System.out.println(); 
        }

    }

}
1 - O programa vai entrar na execução pelo main
2 - Vai iniciar a primeira execução do for(int linha = 0; linha < 10; linha++ ), ou seja, nesse momento sua variável linha tem o valor 0 dentro dela.
3 - O valor 0 para linha permite que entre dentro do laço for. 
4 - Vai passar para a execução do próximo for -> for(int coluna = 0; coluna < 10 ; coluna++ ) , sua variável coluna vale 0 também.
4 - O valor 0 para linha permite que entre dentro do laço for
5 - O código atinge a execução de System.out.print(linha*coluna); então ele imprimirá 0 * 0
6 - Acabou a execução do for interno para o valor linha = 0
7 - Volta ao for interno, e testa a condição com coluna = 1, condição válida para executar o código.
8 - O código atinge a execução de System.out.print(linha*coluna); então ele imprimirá 0 * 1
....
9 - Quando ele atingir o for(int coluna = 0; coluna < 10 ; coluna++ ) com valor 10 ele irá dar falso pra sua condição coluna < 10 e vai para o for externo
10 - Altera o valor de linha para 1 e passa na condição do for externo - > linha < 10
11 - Volta para o for interno.

Assim por diante até finalizar a execução de todos os comandos especificados no código.

Tentei quebrar a linha embaixo do código mas não deu certo.

Consegui entender gente! Muito obrigada César e Joao, ajudaram muito!