4
respostas

Programa com break

for(int linha = 0; linha < 5; linha++) {
            for (int coluna = 0; coluna <= 5; coluna++) {
                if ( coluna > linha ) {
                    break;
                }
                System.out.print( coluna+1 );
            }
            System.out.println();
        }

Não entendi as itereações desse trecho dos laços encadeados. Na primeira iteração é efetuado a comparação: coluna > linha (0 >0), então imprime na primeira linha o valor 1, na segunda iteração devido a soma da coluna+1, dentro do FOR é somado novamente e ficaria coluna=2, entao o break é acionado, pois a coluna= 2 é maior que a linha=0, pula-se uma linha e cai no primeiro FOR com a variável linha = 1, a partir daí não consegui entender a estrutura do resultado. Nessa leitura que fiz acima, por favor, me corrija se estiver errado.

1 12 123 1234 12345

4 respostas

Oie Ricardo, tudo bem com você?

Vou destrinchar loop por loop para ficar mais claro para você.

Antes disso, por conta de ter dois "fors" vou usar a seguinte nomenclatura para facilitar o entendimento:

1º for = "for de linha"

2º for = "for de coluna"

Vamos lá

1º loop do "for de linha":

for(int linha = 0; linha < 5; linha++) {     // linha = 0

//1º Loop "for de coluna:

            for (int coluna = 0; coluna <= 5; coluna++) { //coluna = 0
                if ( coluna > linha ) { // 0 > 0 = false, quando é falso ele não percorre o if
                    break; 
                }
                System.out.print( coluna+1 ); //print(0 + 1)
            } // depois de printar ele volta para o começo do "for de coluna"
            System.out.println(); 
        }
    }

Resposta: 1

for(int linha = 0; linha < 5; linha++) {     //linha = 0

//2º Loop "for de coluna:

            for (int coluna = 0; coluna <= 5; coluna++) { //coluna = 1

                if ( coluna > linha ) { // 1 > 0 = true, quando é verdadeiro ele percorre o if
                    break; // o break quebra o loop, fazendo ele pular todo o restante de código e faz retornar para o primeiro for
                }
                System.out.print( coluna+1 ); //não ocorre o print pois o break quebra o laço antes de chegar nessa linha
            }
            System.out.println(); 
        }
    }

Resposta: nenhuma

Resposta completa do 1º loop do "for de linha": 1

2º loop do for de linha:

for(int linha = 0; linha < 5; linha++) {     // linha = 1, depois do break do último loop ele retorno para essa posição

//1º Loop "for de coluna:

            for (int coluna = 0; coluna <= 5; coluna++) { //coluna = 0, depois do break e o começo de um novo loop a partir do primeiro for, esse for é reiniciado, por isso coluna é igual a 0 novamente.

                if ( coluna > linha ) { // 0 > 1 = false, quando é falso ele não percorre o if
                    break; 
                }
                System.out.print( coluna+1 ); //print(0 + 1)
            } // depois de printar ele volta para o começo do "for de coluna"
            System.out.println(); 
        }
    }

Resposta: 1

for(int linha = 0; linha < 5; linha++) {     // linha = 1

//2º Loop "for de coluna:

            for (int coluna = 0; coluna <= 5; coluna++) { //coluna = 1

                if ( coluna > linha ) { // 1 > 1 = false, quando é falso ele não percorre o if
                    break; 
                }
                System.out.print( coluna+1 ); //print(1 + 1)
            } // depois de printar ele volta para o começo do "for de coluna"
            System.out.println(); 
        }
    }

Resposta: 2

for(int linha = 0; linha < 5; linha++) {     // linha = 1

//3º Loop "for de coluna:

            for (int coluna = 0; coluna <= 5; coluna++) { //coluna = 2

                if ( coluna > linha ) { // 2 > 1 = true, quando é verdadeiro ele percorre o if
                    break; // o break quebra o loop, fazendo ele pular todo o restante de código e faz retornar para o primeiro for
                }
                System.out.print( coluna+1 ); // não ocorre o print pois o break quebra o laço antes de chegar nessa linha
            } 
            System.out.println(); 
        }
    }

Resposta: Nenhuma

Resposta completa do 2º loop do "for de linha": 1 2

A logica apresentada repete nos próximos loops até o valor de "linha" ser igual a 5 fazendo com que o "for" não ocorra por conta da operação "linha < 5" não ser verdadeira (true).

Espero que agora você tenha entendido melhor. Qualquer coisa fico à disposição! :)

Bons estudos!

for(int linha = 0; linha < 5; linha++) {     // linha = 0

//1º Loop "for de coluna:

            for (int coluna = 0; coluna <= 5; coluna++) { //coluna = 0
                if ( coluna > linha ) { // 0 > 1 = false, quando é falso ele não percorre o if
                    break; 
                }
                System.out.print( coluna+1 ); //print(0 + 1)
            } // depois de printar ele volta para o começo do "for de coluna"
            System.out.println(); 
        }
    }

Oi Igor, obrigado pela ajuda. Fiquei com uma dúvida no mecanismo do For de Coluna. No primeiro teste do IF não seria 0 > 0 , pois no For(linha) ele faz a contagem (linha ++) depois da primeira iteração ?

Opa Ricardo, é isso mesmo, o certo no primeiro If é 0 > 0. Eu usei Ctrl + C e Ctrl + V em algumas partes e acabei esquecendo de alterar esse valor.

Já editei minha resposta lá em cima.

Qualquer coisa fico à disposição! :)

ufa, imaginei o que tinha entendido estava tudo errado ...rs Agora entendi com as sua explicações, grato!

Abs Ricardo Ferrão