Ger*_*ony 0 c# for-loop .net-4.0 visual-studio-2010
我遇到了一个我无法解决的奇怪问题,无论我尝试过什么.也许我只是忽略了一些基本因素,但我完全没有想法,所以我当然希望任何人都可以帮助我.
我有一个for循环,它无法正常工作.有趣的是,几乎相同的一个工作得很好.问题是,当i <int时它不会停止(显然),而是继续前进(当然)会在Array处抛出IndexOutOfBounds异常.我很难解释这个,我想我只是"让代码说话":[注意:我编辑了方法调用和其他东西 - 我可以保证 - 与问题无关,制作代码更可读]
for (int i = GeneralVars.intStartAtLine; i < (GeneralVars.intEndAtLine + 1); i++)
{
for (int j = 0; j < 49; j++)
a++;
if (boolCheck == true)
{
for (int j = 0; j < 6; j++)
{
if (z[i].zahlen7[j].nummer != 0)
{
if ((z[i].zahlen7[j + 1].nummer - z[i].zahlen7[j].nummer) == 1)
{
//dosomestuff
}
}
}
if (z[i].zahlen7[0].nummer != 0)
{
if (a == b)
{
//do some stuff
}
}
}
else
{
for (int j = 0; j < 5; i++)
if ((z[i].zahlen[j + 1].nummer - z[i].zahlen[j].nummer) == 1)
{
//dosomestuff
}
if (a == b)
{
//dosomestuff
}
}
}
Run Code Online (Sandbox Code Playgroud)
所以,问题发生在else循环中,如前所述,确切地说,IndexOutOfBounds异常发生在这里
if ((z[i].zahlen[j + 1].nummer - z[i].zahlen[j].nummer) == 1)
Run Code Online (Sandbox Code Playgroud)
它发生的原因是,因为'我'这里是3417,虽然它不可能?我检查了各种断点的变量,Genervars.intEndAtLine总是3416.我<GeneralVars.intEndAtLine + 1应该永远不会达到3417,但确实如此.我还尝试通过添加行来进行简单的测试
if (i != 3417)
Run Code Online (Sandbox Code Playgroud)
在else-loop之前和之后,当它(无论出于什么原因)时它仍然进入它,i = 3417.
所以 - 好吧 - 我完全迷失在这里.提前感谢您提供的任何帮助.
最后注意:我是新来的,我不是母语为英语的人,所以万一我犯了大错,请原谅我:-)
好
for (int j = 0; j < 5; i++) // are you sure you want to increase i here or should it be j?
{
...
}
Run Code Online (Sandbox Code Playgroud)
对于最后一次运行,我想我= = 3416,当你第二次进入这个循环时,我= = 3417你得到了例外.
编辑: 尝试使用常量而不是幻数.你的代码看起来会更清晰.
| 归档时间: |
|
| 查看次数: |
422 次 |
| 最近记录: |