C ++:如何决定循环继续?

时间:2014-12-26 09:59:06

标签: c++ loops for-loop while-loop goto

我有嵌套的do-while,while和for循环。

有没有办法确定哪个循环到"继续"至?各种各样的解决方案都很棒(不仅仅是goto ..)谢谢!

while (foo==true) // loop1
{

   do
   {
      for(int i=0; i<someNumber ; i++) // loop3
      {

         if( soo==1)
         {
             <CONTINUE_TO_LOOP1>
         }
         else if( soo==2 )
         {
             <CONTINUE_TO_LOOP2>
         }
         else if( soo==3 )
         {
             <CONTINUE_TO_LOOP3>
         }

      }

   } while (moo==true) //loop2    

}

4 个答案:

答案 0 :(得分:1)

CONTINUE_TO_LOOP3 simple:continue

CONTINUE_TO_LOOP2 easy:break

CONTINUE_TO_LOOP1这是有趣的:

  • 在不使用四个字母的情况下一步完成 goto
  • 或在loop2周围放置一个try-catch并使用加注来退出。
  • 或假设loop1的结尾和loop2的结尾之间没有代码:  moo = false ; break ;

答案 1 :(得分:1)

可能你可以做这项工作。

while (foo==true) // loop1
{

   do
   {
      for(int i=0; i<someNumber ; i++) // loop3
      {

         if( soo==1)
         {
              break;//<CONTINUE_TO_LOOP1>
         }
         else if( soo==2 )
         {
             break;//<CONTINUE_TO_LOOP2>
         }
         else if( soo==3 )
         {
            continue;//<CONTINUE_TO_LOOP3>
         }
      }
      if( soo==1)
      {
         break;//<CONTINUE_TO_LOOP1>
      }
      else if( soo==2 )
      {
          continue;//<CONTINUE_TO_LOOP2>
      }
   } while (moo==true) //loop2    
   if( soo==1)
   {
       continue;//<CONTINUE_TO_LOOP1>
   } 
}

答案 2 :(得分:1)

进行一些重组,没有转到:

bool loop3()
{
    for (int i=0; i < someNumber ; i++) {
        if(soo == 1) {
            return false;
        } else if(soo == 2) {
            return true;
        } else if(soo == 3) {
            continue;
        }
    }
    return true;
}

循环变为:

while (foo == true) // loop1
{
   do
   {
       if (loop3() == false) {
           break;
       }
   } while (moo == true) //loop2    
}

答案 3 :(得分:1)

我提倡无条件分支来表达标签。其他解决方案将花费额外的条件分支和可能的状态变量,灵活性会降低,并且可读性会低得多。