如何仅为此特定值打破for循环

时间:2014-11-26 14:28:09

标签: c++

我想问一下如何在c ++中打破'for'循环,但仅限于一个特定值。例如

for (i = 0; i <= 3; i++)
{
    for (z = 0; z <= 6; i++)
    {
       //extra code here...   
    }
}

现在我想打破for循环,如果z = 2的值,但我想要打破i的循环。 像这样:

i - &gt; 0
z - &gt; 0
z - &gt; 1
//打破两个循环 异&GT; 1
z - &gt; 0
.........

任何人都可以帮助我吗?

7 个答案:

答案 0 :(得分:3)

您可以从众多变种中进行选择。

  1. 使用特殊标志变量:

    bool success = false;
    for (i = 0; i <= 3; i++)
    {
        for (z = 0; z <= 6; i++)
        {
            //extra code here...   
            success = true;
            break;
        }
        if (success) {
            break;
        }
    }
    
  2. 使用return语句(但您可能还需要适当地重写代码):

    for (i = 0; i <= 3; i++)
    {
        for (z = 0; z <= 6; i++)
        {
           //extra code here...
           return; //or return <something>;   
        }
    }
    
  3. 使用throw,但在我看来,这不是一个好习惯:

    try {
        for (i = 0; i <= 3; i++)
        {
            for (z = 0; z <= 6; i++)
            {
               //extra code here...   
               throw <something>
            }
        }
    } catch (const excpttype& e) {
        // ...
    }
    
  4. 在循环中使用stop - 条件:

    bool breakFor = false;        
    for (i = 0; i <= 3 && !breakFor; i++)
    {
        for (z = 0; z <= 6; i++)
        {
           //extra code here...   
           breakFor = true;
           break;
        }
    }
    
  5. 使用显式赋值来打破循环:

    for (i = 0; i <= 3; i++)
    {
        for (z = 0; z <= 6; i++)
        {
           //extra code here...   
           i = 4;
           break;
        }
    }
    
  6. 使用goto声明:

    for (i = 0; i <= 3; i++)
    {
        for (z = 0; z <= 6; i++)
        {
           //extra code here...   
           goto afterLoop;
        }
    }
    
    afterLoop:
    // code
    
  7. 我认为最好的做法是使用flag-variable或重构这个循环在一个单独的函数内。

答案 1 :(得分:2)

无需额外的变量。

for (i = 0; i <= 3; i++)
{
   for (z = 0; z <= 6; z++)
   {
      //extra code here...   
      if (z == 2) {
            i = 4;
            break;
      }
   }
}

虽然以这种方式打破循环没有任何意义。可能你需要一些额外的条件。

答案 2 :(得分:1)

for (i = 0; i <= 3; i++)
{
    for (z = 0; z <= 6; z++)
    {
       //extra code here...   
       if (specificValue) 
       {
           break;
       }
    }
}

答案 3 :(得分:1)

    boolean condition=false;

    for (i = 0; i <= 3; i++)
    {
        for (z = 0; z <= 6; i++)
        {
           //extra code here...   

            if(z==2){

                condition=true;
                break;
            }

        }

        if(condition){

            break;
        }
    }

答案 4 :(得分:0)

for循环中间的条件只是一个正常条件,因此您可以检查的不仅仅是整数的值。即。

var breakTheLoop = false;

for (i = 0; i <= 3 && !breakTheLoop; i++)
{
    for (z = 0; z <= 6 && !breakTheLoop; z++)
    {
       //extra code here...   
       if (specificValue) 
       {
           breakTheLoop = true;
           break;
       }
    }
}

答案 5 :(得分:0)

我认为答案很简单:只需设置一个if语句并在值为2(或某个值...)时呼吸。

例如:

<强> CODE

for (i = 0; i <= 3; i++)
{
    for (z = 0; z <= 6; i++)
    {
       if(z == 2)
        break;
    }
}

我希望这能解决你的问题!如果不只是写评论并告诉我你的错误。然后我会尝试为你编写一些代码示例!祝你有愉快的一天!

答案 6 :(得分:0)

您忘记在第二个循环中增加z,它会一直“永远”运行。

这是一种方法:

bool break_loop = 0;
for (int i = 0; i <= 3 && !break_loop; ++i)
{
  for (int z = 0; z <= 6 && !break_loop; ++z)
  {
    //extra code here...
    if (z == 2)
      break_loop = 1;
  }
}

或者你可以在两个循环中执行if语句,然后在break执行我喜欢的语句。

bool break_loop = 0;
for (int i = 0; i <= 3; ++i)
{
  for (int z = 0; z <= 6; ++z)
  {
    //extra code here...
    if (z == 2)
      break_loop = 1;
  }
  if (break_loop)
    break;
}