我按顺序有两个for循环。当我独自运行它时,第一个for循环工作非常奇怪。但是当我单独运行第二个循环时,我得到一个超出范围异常错误的索引。有人可以帮我查看错误是什么吗?非常感谢!
for (i = NiPricePointer; i < 551; i++)
{
tempUpper = tempUpper + NiPriceCounter[i];
if (tempUpper >= (NiPriceRounds * 0.3))
{
chart3.Series["Upper 30%"].Points.AddXY(k * 500, ((i - 1) * 0.1 + 5));
break;
}
}
for (i = NiPricePointer; i>0; i--) //This loop always gives me out of range problems.
{
tempLower = tempLower + NiPriceCounter[i];
if (tempLower >= (NiPriceRounds * 0.3))
{
chart3.Series["Lower 30%"].Points.AddXY(k * 500, ((i - 1) * 0.1 + 5));
break;
}
}
数组的初始化:
int[] NiPriceCounter = new int[551];
非常感谢!
答案 0 :(得分:5)
我想,NiPricePointer只是大于550.你的两个循环都应该包含两个边界作为一个检查:
for (i = NiPricePointer; i < 551 && i >=0; i++)
和
for (i = NiPricePointer; i < 551 && i >=0 ; i--)
答案 1 :(得分:0)
NiPricePointer将增加1
所以
你的第二个循环应该是
for(i = NiPricePointer-1;i>0;i--);
答案 2 :(得分:0)
将其添加到每个循环
Debug.Assert((i < 551) && (i >= 0));
答案 3 :(得分:0)
更改此
for(i = NiPricePointer; i> 0; i - )
有了这个:
表示(i = 550; i> = 0; i - )