下面是我的一段代码:为什么当X=61了,还不退出循环,而是继续进去造成报错,怎么回事,高手指点一二啊!
int y = 0;
            for (int x = 0; x <= 60; x++)
            {
                string num1 = e.Row.Cells[x + 12].Text;
                string num2 = e.Row.Cells[x + 13].Text;
                if (num1=="")
                {
                    num1 = "0";                    if (num2=="")
                    {
                        num2 = "0";
                    }
                }
                time[y] += Convert.ToDouble(num1) / Convert.ToDouble(e.Row.Cells[10].Text) + Convert.ToDouble(num2) / Convert.ToDouble(e.Row.Cells[10].Text);
                x++;
                y++;
            }

解决方案 »

  1.   

    int y = 0; 
                for (int x = 0; x  <= 60; x++) 
                { 
                    string num1 = e.Row.Cells[x + 12].Text; 
                    string num2 = e.Row.Cells[x + 13].Text; 
                    if (num1=="") 
                    { 
                        num1 = "0";                     if (num2=="") 
                        { 
                            num2 = "0"; 
                        } 
                    } 
                    time[y] += Convert.ToDouble(num1) / Convert.ToDouble(e.Row.Cells[10].Text) + Convert.ToDouble(num2) / Convert.ToDouble(e.Row.Cells[10].Text); 
    //                x++; 
                    y++; 
                }你的x++;怎么运行了两次?
      

  2.   

    是啊,我一次循环是要把相邻的两个加起来的,所以要循环两次了
    我的time我是声明了31个单元的
      

  3.   

    你可以 for(......)
                 {
                    .........
                    x++;
                    y++;
                    if(x==60)
                       break;
                 }
      

  4.   

    for (int x = 0; x   <= 60; x+2)
    或者for (int x = 0; x   <= 30; x++) 
    string num1 = e.Row.Cells[2*x + 12].Text; 
    这样不就比你的两次好理解吗?而且不容易出错阿 
      

  5.   

     在循环体内:if(x>60) break; 
                      
      

  6.   

    X=61当然退不出循环,
    当x=60的时候,循环到后边还有个x++;
    所以x变成61,然后for (int x = 0; x   <= 60; x++)  
    让x变成62。。                string num1 = e.Row.Cells[x + 12].Text; 
                    string num2 = e.Row.Cells[x + 13].Text; 
    里边的x是不可能=61的。
    报错是不是因为[x + 12].[x + 13].取得不对阿,
    另外,你报什么错?你报错的时候x是多少?
      

  7.   

    没有啊 我这里运行了 到61就不继续了啊 倒数第2次循环时候X是58开始 经过x++; 变成59在经过括号里的x++变成60
    然后继续经过x++; 变成61在经过括号里的x++变成62 就不继续了啊
      

  8.   

    下面是我的一段代码:为什么当X=61了,还不退出循环
    -----------------------
    你不是问X=61怎么不退出循环吗?
    你程序包什么错?索引超界了?
    那就不是你循环问题了。
                    string num1 = e.Row.Cells[x + 12].Text;  
                    string num2 = e.Row.Cells[x + 13].Text; 
    上边逻辑没问题吗?