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

Ajuda a entende um codigo

public class testeLaços2 {

    public static void main(String[] args) {

        int linha;
        int coluna;

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

            System.out.println();

        }
    }
}

Este código, quando compilado e executado gera esse resultado:

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

mas to tentando entender a logica/ordem em que ele faz imprimir os "*" na tela, alguém saberia me explicar?

2 respostas

Bom dia Rafael, nesses casos de dois for, tenta entender como duas engrenagens, uma maior e outra menor que seriam os fors de fora e de dentro. Dai a primeira engrenagem roda apenas 1 e ja passa pra segunda engrenagem que roda até o limite de coluna < 10, quando a segunda engrenagem(segundo for) acabar, volta pra primeira engrenagem(primeiro for) que anda mais 1 e assim por diante

solução!

Fala Rafael,

Tranquilo?

Vamos entender cada linha do código, assim acho que ficará mais claro:


public class testeLaços2 {

    public static void main(String[] args) {

        int linha;
        int coluna;

        for(linha = 1;linha < 10;linha++) { //define a variável linha como inicialmente 1 (linha = 1), ou seja, primeira linha, e enquanto a variável for menor que 10 (linha < 10), ele irá percorrer dentro deste for, e ao final de cara ciclo ele irá incrementar a variável linha (linha++), ou seja, no final de percorrer a linha, a variável mudará de 1 para 2, fazendo com que ele mude de linha
            for(coluna = 1;coluna < 10;coluna++) { // aqui acontece a mesma coisa, porém para colunas, ele começa com a coluna sendo 1, e enquanto a coluna for menor que 10, ele irá percorrer o código dentro do for, e no final irá incrementar em 1 o valor da coluna
                System.out.print("*" ); // aqui ele irá imprimir o asterisco, 
                System.out.print(" "); // aqui ele irá imprimir o espaço
            } // aqui ele terminou o laço do for das coluna, ou seja, ele imprimiu "* * * * * * * * * " por que passou por todas as colunas enquanto era menor de 10, neste caso ele só imprime 9 asteriscos por que a variável começa com 1 e só irá imprimir enquanto for menor que 10, se você colocar (coluna <=10) ele irá imprimir 10 colunas.

            System.out.println(); // aqui ele quebra a linha, para começar uma nova linha

        } // e aqui ele finaliza as linhas
    }
}

Ou seja, para cada linha ele irá percorrer as 9 colunas, e para cada coluna ele irá imprimir o valor "* ", ao final da linha ele irá quebrar a linha para começar uma linha nova.

Espero ter ajudado e não confundido mais hehe

Abraços!