次のコードを検討してください。
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++)
{
.............
.............
.............
}
}
}
実行すると、IF条件が真になってzの値が変化しています。しかし、f の値は常に 0 です。条件が真の場合、z の値に変更する必要があります。z の値がゼロになるのは、最後のループを終了して一番上のループを継続するときだけです。
このコードの何が問題なのか教えてください。間違ったロジックを適用していますか?
アップデート:
みんなの問題は解決され、すべてが正常に機能していました。はっきりと見えなかっただけです。コンソールにすべての変数の値 (f と z の値) を表示したところ、正常に機能していることがわかりました。申し訳ありません。