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

Dúvida cruel!!!!

Galera humildemente eu gostaria de pedir pra alguma alma caridosa me explicar a lógica desse segundo for. Eu estou tentando de todas as formas aqui e parece que nada que penso faz sentido. Estou louco? Agradeço demais!!!!

5 respostas
public class TesteLaçosAninhados2 {
    public static void main(String[] args) {
        for(int linha = 0; linha < 10; linha++) {
            for(int coluna = 0; coluna <= linha; coluna++) {
                System.out.print("*");
            }
        System.out.println();
        }
    }
}

Você não entendeu pra que serve esse segundo for, é isso?

Isso João. Não estou de forma alguma conseguindo entender a lógica desse segundo for.

solução!
/* Tudo bem Gabriel?
Tentarei te explicar de forma mais detalhada. O que estiver com "//" 
será minha explicação OK. */

 public class TesteLacosAninhados2 {

    public static void main(String[] args) {

 for(int linha = 0; linha < 10; linha++) {
    // Nesse caso linha tem o valor de "0";

            for(int coluna = 0; coluna <= linha; coluna++) {
    //Quando chega aqui ele verifica o valor de coluna, que é "0", 
    //e vê se é menor ou igual a linha, que também é "0".
    // (coluna = 0) é menor ou igual a (linha = 0)? Sim (true), então
    //ele passa para a parte de baixo e imprime um asterisco.

                System.out.print("*");

    // Aqui ele incrementa coluna com + 1 (incremento do segundo FOR) 
    //e faz novamente a verificação, só que agora coluna = 1.
    // E volta pro segundo FOR pra verficar se: (coluna = 1) é menor ou 
    //igual a (linha = 0)? Não (false), então sai do segundo FOR e 
    //continua     o programa saindo do loop, porque a a condição 
    //foi falsa.
        }

    System.out.println();
    // Aqui ele pula uma linha e incrementa a linha com + 1 (incremento
    //do primeiro FOR). E volta pra verificação do primeiro FOR.

    }
  }
}

    /*Quando ele faz a verificação novamente, linha agora é 1, pois foi 
    incrementada.
    Aí no segundo FOR está lá novamente (coluna = 0), e é verificado se
    coluna é menor ou igual a linha, porém agora linha é igual 1.
    Então ele faz: (coluna = 0) é menor ou igual a (linha = 1)? 
    Sim (true), então ele passa para a parte de baixo e imprime um 
    asterisco.

    Incrementa coluna com + 1 (incremento do segundo FOR) e faz 
    novamente a verificação, só que agora coluna = 1.
    (coluna = 1) é menor ou igual a (linha = 1)? Sim (true), então
    ele passa para a parte de baixo e imprime outro asterisco.

    Ainda dentro do segundo FOR ele novamente incrementa coluna com + 1,
    e agora coluna = 2.
    E volta pro segundo FOR pra verficar se: (coluna = 2) é menor ou 
    igual a (linha = 1)? Não (false), então sai do segundo FOR e 
    continua o programa saindo do loop, porque a a condição foi falsa.

    Novamente ele pula uma linha e incrementa linha com + 1 e linha
    passa a ser 2.
    Aí vai fazendo as mesmas verificações no segundo FOR começando com 
    (coluna = 0) e vendo se é menor ou igual ao valor da linha.
    Enquanto a coluna for menor que a linha, ele vai imprimindo um 
    asterisco e incrementando com + 1 a coluna até a condição se tornar
    falsa e ele pular mais uma linha e incrementar a variável linha com
    + 1.
    O ciclo termina quando o valor de linha for 10.

    O programa imprimiu na primeira vez:

    *

    Na segunda vez:

    **

    E depois dos outros loops ficará:

    *
    **
    ***
    ****
    *****
    ******
    *******
    ********
    *********
    **********

    Espero ter ajudado, abraço! */

Muito obrigado Lucas, me ajudou bastante e deu pra entender melhor a lógica disso.

Fico feliz por ter ajudado brother! Boa sorte nos estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software