1

互いに3つのループがある場合、どのようにして上位レベルのループに分割できますか?

がある

while (abc) {
    for (int dep =0 ; dep<b ; dep++)  {
         for (int jwe=0 ; jwe<g ; jwe++) {
             if (! (ef || hf) ) {
             //here is where i want to break to loop while
             //or in other purpose (other situation) i need 
             //to know how i could break to first loop  
             //i mean (for (int dep =0 ; dep< b ; dep++)
             }
         }
    }
} 

誰かが私を助けてくれませんか、どのようにしたら、私はwhileループに割り込むことができますか、またはどのように私は最初のループ「for」に割り込むことができますか。

4

6 に答える 6

4

外側のループのカウンターを、再度実行されないような値に設定するだけです。

while (abc) {
    for (int dep =0 ; dep<b ; dep++)
    for (int jwe=0 ; jwe<g ; jwe++)
     if (! (ef || hf) ) {
         //here is where you want to break to the while-loop
         //abc = 0; here will make it exit the entire while as well
         dep = b; //in order to exit the first for-loop
         break;
     }
} 
于 2013-03-02T22:24:35.970 に答える
2

これはgoto、最も明確な構成である(まれな)ケースの1つです。

while (abc) {
    for (int dep =0 ; dep<b ; dep++)  {
         for (int jwe=0 ; jwe<g ; jwe++) {
             if (! (ef || hf) ) {
                 // Do anything needed before leaving "in the middle"
                 goto out;
             }
         }
    }
}
out:
// Continue here

インデントがラベルを隠さないようにしてください。

于 2013-03-02T22:43:14.033 に答える
0

intたとえば、変数を使用int terminate = 0;して、条件とともにwhileループに配置しますwhile(true && terminate == 0)。外側のループを解除する場合は、内側のループを解除する前に変数をに設定し1ます。

于 2013-03-02T22:30:42.310 に答える
0

一部の言語(Javaを含む)は、ラベルへの分割をサポートしています。

outerLoop: // a label
while(true) {
   for(int i = 0; i < X; i++) {
      for(int j = 0; j < Y; j++) {
         // do stuff 
         break outerLoop; // go to your label
      }
   }
}
于 2013-03-02T22:27:16.550 に答える
0
int breakForLoop=0;
    int breakWhileLoop=0;
    while (abc) {

        for (int dep = 0;dep < b;dep++) {

            for (int jwe = 0;jwe < g; jwe++) {


                if (!(ef || hf)) {
                    breakForLoop=1;
                    breakWhileLoop=1;
                    break;

                }
            }
            if(breakForLoop==1){
                break;
            }
        }
        if( breakWhileLoop==1){
                break;
            }
    } 
于 2013-03-02T22:29:12.217 に答える
0
continue_outer_loop = true;
while (abc) {

  for ( int i = 0; i < X && continue_outer_loop; i++) {
    for ( int j = 0; j < Y; j++ {

       if (defg) {
         continue_outer_loop = false;  // exit outer for loop
         break;                        // exit inner for loop
       }

    }
  }
}
于 2013-03-02T22:35:21.607 に答える