索引超出范围问题

时间:2011-03-01 15:30:25

标签: c# arrays

我按顺序有两个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];

非常感谢!

4 个答案:

答案 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 - )