3
respostas

Não entendi a lógica

Se dentro do for, sem o break, a coluna é <= linha, por que no if com o break, a coluna é > que a linha?

public class TestaLacos2 {

    public static void main(String[] args) {
        for (int linha = 0; linha < 10; linha++) {
            for (int coluna = 0; coluna <= linha; coluna++) //{
                //if(coluna > linha) {
                    //break;
                //}
                System.out.print("*");
            //}
            System.out.println();
        }
    }
}

3 respostas

Olá Israel,

existem dois for's. Um externo e interno, que envolve o if.

O for externo incrementa a linha, desta forma, sempre que a execução estiver alí, o valor da variável linha será maior do que o valor da variável coluna

O for interno incrementa coluna. Assim, quando o fluxo entrar alí, a variável linha não é mais incrementada, fazendo com que depois de alguns loops o valor da variável coluna seja maior que o valor da variável linha.

Vale lembrar que toda vez que a execução voltar ao for interno, o valor da variável coluna é reinicializado.

Entendi mais ou menos, continua confuso, mas espero que com o tempo clareie melhor.

edit: Então sempre a coluna tem que ser menor que a linha certo? Por isso que tem que dar break se ela for maior?

Então sempre a coluna tem que ser menor que a linha certo? Por isso que tem que dar break se ela for maior?

Para formar a geometria que deseja, coluna tem que ser igual a linha. Quando o valor da variável coluna for maior que linha, ocorre o break.