I've come across a weird problem which I can't solve, no matter what i tried. Maybe I'm just overlooking something elemental but I've completely run out of ideas so I certainly hope anybody can help me.
I have a for-loop which doesn't work properly. Interesting enough, an almost identical one works just fine. The problem is, that it doesn't stop (apparently) when i < int but instead keeps going which (of course) throws an IndexOutOfBounds exception at an Array. I'm bad at explaining this I guess so i'll just "let the code speak": [NOTE: I edited out method calls and other stuff which - I can assure - has nothing to do with the problem, to make the code more readable]
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
}
}
}
So, the problem occurs in the else-loop, as 开发者_开发知识库mentioned before, to be precise, the IndexOutOfBounds exception occurs here
if ((z[i].zahlen[j + 1].nummer - z[i].zahlen[j].nummer) == 1)
The reason why it happens is, because 'i' here is 3417, although it can't be? I checked the variables with various break points, Genervars.intEndAtLine is always 3416. i < GeneralVars.intEndAtLine + 1 should never reach 3417, yet it does. I also tried a simple work-around for testing purposes by adding the line
if (i != 3417)
before and after the else-loop, yet it STILL enters it when (for whatever reason), i = 3417.
So - well - I'm completely lost here. Thanks in advance for any help I'll receive.
Last Note: I'm new here and I'm not a native english speaker, so in case I did any big mistakes, please forgive me :-)
Well
for (int j = 0; j < 5; i++) // are you sure you want to increase i here or should it be j?
{
...
}
For the last run, I guess i == 3416 and when you enter this loop for the second time, i == 3417 and you get the exception.
Edit: Try to use constants instead of magic numbers. Your code would look much cleaner.
精彩评论