Dúvida labeled loops

3 respostas
F

Dúvida com o Labeled Loop, se alguém puder me ajudar eu agradeço.

Bom … eu andei lendo sobre labeled loop e pelo que eu entendi é o seguinte, eu tenho 2 for o segundo está dentro do primeiro… então se eu quiser da um break no primeiro for e deixar o segundo rolar então eu crio o labeled loop (dou um nome ao laço for) então se eu quiser parar o primeiro for quando o número for igual a 5 eu dou um nome para ele e coloco dentro do if um break assim: break para_primeiro_for ; Estou certo?

Exemplo:

primeiro: for (int a = 0; a <= 10; a++) {
			segundo:
				if (a == 5) {

				break segundo;
			}
			System.out.println("Primeiro loop A : " + a);
			for (int b = 0; b <= 10; b++) {

				if (b == 3) {

					break primeiro;
				}

				System.out.println("Segundo Loop: " + b);

			}
		}

3 Respostas

F

ninguém?

x111

Não, voce usa quando deseja dar um break ou continue em um for externo de um for interno:

primeiroFor: 
			for (int i = 0; i < 5; i ++) {
				System.out.printf("valor i = %d \n", i);
				for (int j = 0; j < 5; j++){
					System.out.printf("valor j = %d \n", j);
					if ((i == 2) && (j == 3))
						break primeiroFor;
				}
			}
		System.out.printf("Concluido \n");

o que acontece é que quando a condição if ((i == 2) && (j == 3)) for verdadeira sera interrompido o primeiro for e assim o segundo na sequencia.
Não é recomendável o uso de Labeled Loop, pois ele quebra o fluxo normal do programa como o goto em C, o correto nesses casos seria usar recursão.

Na verdade não. O certo para cinco interações: A0B0B1B2B3B4 A1B0B1B2B3B4 A2B0B1B2B3B4 A3B0B1B2B3B4 A4B0B1B2B3B4
exemplo:

public static void main(String[] args) { for (int i = 0; i < 5; i ++) { System.out.printf("A%d", i); for (int j = 0; j < 5; j++){ System.out.printf("B%d", j); } System.out.printf(" "); } }
Não utilize também a, b ou c como variável de controle para laços for, o padrão (informal) é i, j, k…

x111

Ops, não tinha lido direito a pergunta.
Na verdade o comportamento do seu programa está correto, o que acontece é isso:

laco varialvel_de controle _I de 1 até 10
inicio
  imprime varialvel_de controle _I
  //Assim que imprimir ele entra no segundo laço
  laco varialvel_de controle _J de 1 até 10
  inicio
    imprime varialvel_de controle _J
    // sai deste laço quando  a varialvel_de controle _J chegar a 10
  fim
  //Saiu do segundo laço, porém enquando a varialvel_de controle _i for menor que 10 vai incrementa-la e voltar para a linha 3 e repetindo a operação novamente
fim
Criado 7 de janeiro de 2011
Ultima resposta 7 de jan. de 2011
Respostas 3
Participantes 2