在IF语句中使用嵌套在FOR中的break语句

时间:2013-04-17 11:55:08

标签: c# c#-4.0 loops for-loop break

考虑以下代码:

int f=0;
for(......)
{
    ..........
    ..........
    //some code that does not alter f and z
    ..........
    ..........
    double prev = 0; int z = 0; int y = 0;
    for (int x = 0; x < c.timesteps; x++)
    {

        for (z=0; z < outs[i].campaigns.ToArray().Length; z++)
        {
            if (x == (outs[i].outage_dates[outs[i].campaigns[z]] * 7))
            {
                f = z;
                break;
            }
        }
        Console.WriteLine("\nF=" + f);
        Console.Read();
        for (y = f; y < outs[i].campaigns.ToArray().Length; y++)
        {
            .............

            .............

            .............
        }
    }
}

当我执行它时,z的值随着IF条件变为真而改变。但是f的值总是为零。当条件为真时,应该更改为z的值。当z离开最后一个循环并继续顶循环时,z的值只能为零。

任何人都请告诉我这段代码有什么问题?我应用了一些错误的逻辑吗?

更新

伙计问题解决了一切正常。只是我无法清楚地看到它。我在控制台上显示了每个变量的值(f和z的值),我发现它的工作正常。为此道歉。

1 个答案:

答案 0 :(得分:4)

  

当z离开最后一个循环时,z的值只能为零   继续上一圈。

不,内部for循环的第一次迭代中z的值为0,如果在第一次迭代期间满足条件,则f将被分配0并且它将保持0直到其余部分。或者,如果从未满足条件,那么f将保留其旧值0