Quem disse que java é bonito? C pelo menos tem a coragem de assumir que tem goto. Java disfarça na estrutura que chamamaram de Labelled Loops.

Brincadeiras a parte, embora o goto seja uma palavra reservada do Java, ele não está implementado. Como a única razão para se manter o goto em uma linguagem é você poder quebrar vários laços de uma vez (o que costuma indicar que seu código não deve estar muito bom), Java simplesmente permite que você de nomes aos seus laços e passe, como parâmetro para break e continue o label do seu loop.


public class Teste {
  public static void main(String []args){

  externo:for (int i = 0; i < 10; i++){
                 System.out.println("i = " + i);
                 interno:for (int j = 0; j < 20; j++){
                               System.out.println("j = " + j);
                               if (j < 4 && (j & 1) == 0)
                                 break interno;
                               if ((i * j) / 5 > 0)
                                 break externo;
                            }
               }
  }
}

Quando você rodar esse código feio e nojento, a saída será:


i = 0
j = 0
j = 1
j = 2
j = 3
j = 4
j = 5
j = 6
i = 1
j = 0
j = 1
j = 2
j = 3
j = 4
j = 5

Fiz o código bem feio pra deixar bem claro que embora exista, isso não deve ser usado nos seus códigos. Um simples break já pode causar confusão. Imaginem um monte de break e continue com uma palavra na frente. Você praticamente está condenando seu projeto ao fracasso (por que dois dias mais tarde você não conseguirá entender o que está escrito).

Posts Relacionados:

  • No related posts
  • Assine nosso RSS feed!