Labeled Loop

Olá pessoal, sou novo no fórum… esse é meu primeiro post.
Estou iniciando em java e me pintou uma dúvida, alguém poderia me explicar o q é labeled loop e dar algum exemplo.
Antes que me mandem procurar, já fiz isso, obtive algumas respostas… más nd q eu pudesse entender completamente.
Desde já Obrigado.

?

imagina um monte de loops e la dentro da um erro?

[code]public class A{

public static void main(String [] args){
	int total;
	boolean erro = false;
	inicio:
	if(!erro)
	for(int i=0;i<10;i++){
		for(int j=0;j<10;j++){
			for(int k=0;k<10;k++){
				for(int l=0;l<10;l++){
					for(int m=0;m<10;m++){
						total = (i*10000 + j*1000 +k*100 + l*10 + m);
						System.out.println("agora estamos tratando do : " + total);
						if(total == 666) {
							erro = true;
							break inicio;
						}
					}
				}
			}
		}
	}
}

}[/code]

:shock:

Só complementando o que o peczenyj disse…

O conceito de Labeled Loop, é você dar um “label” (um nome) para um certo loop, como citado acima… Note que ele definiu um label para o primeiro loop, e para ele não ter que ficar fazendo o controle por variáveis para sair do loop que é uma coisa muito “feia” e chata de se fazer, mas dependendo do caso é necessário, ex:

boolean parar = false;

for(int i = 0; i < 10; i++)
{
	for(int j = 10; j > 0; j--)
		if(i * 2 == j / 2)
		{
			parar = true;
			break;
		}

	if(parar)
		break;
}

Você simplesmente da um “nome” para o um loop, e se tiver que parar esse loop por qualquer que seja o motivo, você o faz chamando break label. E assim é feita a mágica! Hehehe…

Qualquer dúvida posta aí!

FlwZ!

[]'s

Vlw pessoal, eu entendi como funciona.
Agora pra dar o nome ao loop, como faz ?
Obrigado

Muito simples também… Na verdade, você não da nome a um loop… E sim a um bloco de comandos… E ele é feito assim:

Label:
{
	// código
}

Lembrando que o conceito das chaves é sempre o mesmo, se não houver chaves, somente a primeira linha de código que é executada, portanto, no código

Loop1:
	for(int i = 0; i < 10; i++)
		if(i / 2 == 4)
			break Loop1;

	System.out.println("Terminei o loop");

A mensagem Terminei o loop irá ser exibida em qualquer ocasião, já no código abaixo:

Loop1:
{
	for(int i = 0; i < 10; i++)
		if(i / 2 == 4)
			break Loop1;

	System.out.println("Terminei o loop");
}

Não irá ser, porque assim que i valer 8, o break Loop1 será executado, saindo assim do bloco Loop1…

Qualquer dúvida grita! :smiley:

FlwZ!

[]'s

Vlw cara, acho q entendi como funciona.
Obrigado !!!

Também estou começando com o Java e achei muito semelhante com o comando go to do c ou outras linguagens da M$ por ai !

Java tbm tem GOTO e CONST são duas palavras reservadas do java mais que vc não PODE usar. =)