Estruturas de controle encandeadas

7 respostas
jroberto.nsc
Alô pessoal... Bem , eu estou com uma duvida em estruturas de controle encandeadas uma estrutura dentro da outra , a duvida eo seguite como eu controlo as estruturas mais internas , no caso do o while...pq ele não tem uma variável de controle .... eu tentei um flag no premeiro e um flag no segundo , mais o flag so funciona na primeira pq? alguem tem exemplos? até logo pessoal.
while(condição){

if(meuFlag){
break; 
// Para essa estrutura é normal o flag funciona.
}
     while(condição2){
              }
        if(meuFlag2){
        break;
        // mais para o segundo flag não.
    }

}
Exemplo :
int a  = 7;
int cont =1;
while(a <10){
      System.out.print("Valor de A While(1) = " + a);
      cont ++;
      if(cont == 2){
    break;
}
while(a < 8){
       System.out.println("Valor de A While(2) = " + a);
       cont++;
       if(cont == 2){
       break;
    }
  }
}
é mais ou menos isso.

7 Respostas

pmlm

No segundo while o cont, que estava a 2 vai ser incrementado para 3 antes da comparação, logo nunca vai ser 2 e não vai fazer o break.

E porque não fazer assim:

int a  = 7;  
    int cont =1;
  
    while(a <10 && cont != 2) {  
        System.out.print("Valor de A While(1) = " + a);  
        cont ++;  
    }  
    while(a < 8 && cont != 2) {  
        System.out.println("Valor de A While(2) = " + a);  
        cont++;  
    }
jroberto.nsc

Pode ser sim. Mas como controlar o loop assim ?

nel

Boa tarde.

Uma pergunta, você quer que os loops estejam encadeados perfeito, sendo assim, você quer que se o loop mais interno caia em uma determinada situação ele encerre o loop, desde o loop mais interno até o primeiro loop, digamos “subindo a árvore”, seria isto?

Abraços.

jroberto.nsc

Sim a questão e essa , e possível encerrar o loop assim ? por que com for e mais facil fazer isso pelo fato dela ser uma estrutura que possui uma variavel de controle , já o while() , o do while(); não , então fazer o controle e de forma “manual”. ate logo

nel

Isto lhe ajuda? :slight_smile:

int i = 1; while(i > 0) { System.out.println("Contagem: "+i); System.out.println("###############"); while(i<8) { System.out.println("Contagem: "+i); if(i == 4) { i = 0; System.out.println("###############"); System.out.println("break"); break; } i++; } }

Abraços.

G

Boa Tarde. Então, existe os “labeled loops” !

Não acredito que seja a mais elegante de todas, mas … dá uma olhada :

http://www.guj.com.br/posts/list/31389.java

Era isso que você queria fazer ?

Té mais.

jroberto.nsc

Bem é algo similar , eu so estava em duvida como controlar o laço mais interno… esse codigo aqui e o correto:
o valor satisfaz as duas condições dos loop’s é em seguida a interação e parada com um flag no segundo while().

public static void main(String[] args){
    int a = 7;
    int cont = 1;

     while(a <10 && cont != 2) {
    System.out.println("Valor de A While(1) = " + a);
     cont ++;
 }
 while(a < 8 ) {
     System.out.println("Valor de A While(2) = " + a);
     cont++;
     if(cont != 2){
        break;
     }
 }
}
}
Criado 27 de janeiro de 2010
Ultima resposta 27 de jan. de 2010
Respostas 7
Participantes 4