簡體   English   中英

C#ArgumentOutOfRange異常,無法弄清楚

[英]C# ArgumentOutOfRange Exception, can not figure it out

我在處理圖形的應用程序中收到ArgumentOutOfRange異常(索引超出范圍。必須為非負數,並且小於集合的大小。)(但我想弄清楚錯誤出在哪里並不那么重要是)。

這是我的方法:

  public void InverznaFunkcia2(double a, double b, int n, List<Point> F, int m)
    {
        int i = 0;
        double yj = F[0].Y;
        double KrokX = (b - a) / n;
        double KrokY = (F[0].Y - F[n].Y) / m;


        for (int j = 0; j < m - 1; j++)
        {
            while (yj > F[i + 1].Y)
            {
                i = i + 1;
                if (F[i].Y > 200)
                {
                    break;
                }

            }
            invF.Add(j);

            //EXCEPTION THROWN ON THE FOLLOWING LINE:
            invF[j] =( a + (j + ((yj - F[i].Y) / (F[i + 1].Y - F[i].Y)) * KrokX));
           // invF[j].X = a + (j + ((yj - F[i].Y) / (F[i + 1].Y - F[i].Y)) * KrokX);
            yj = yj + KrokY;
            pomocneX.Add(j);
            double ux =  F[i].X -F[i+1].X;
            double uy =  F[i].Y - F[i+1].Y;
            double t = (invF[j] - F[i].Y) / uy;
            pomocneX[j] = F[i].X + (t * ux);



            //pomocneX[j] = ( a +  (j + ((yj - F[i].X) / (F[i + 1].X - F[i].X)) * KrokX));
            textBox3.Text += "invF" + j + "\t" + (invF[j] + "\r\n");
            textBox4.Text += "X" + j + "\t" + (pomocneX[j] + "\r\n"); 
        }
        //invF.Add(m);
       // invF[m] = (double)b;

    }

我知道這里已經討論了這種異常,但是我不知道如何解決。 謝謝。

k; 因此,讓我們進行剖析:

//EXCEPTION THROWN ON THE FOLLOWING LINE:
invF[j] =( a + (j + ((yj - F[i].Y) / (F[i + 1].Y - F[i].Y)) * KrokX));

現在; 可以開始問諸如“ jm限制;我們如何知道invF[j]有意義?”之類的問題? 但是,添加一些調試代碼會更容易:

try {
    invF[j] =( a + (j + ((yj - F[i].Y) / (F[i + 1].Y - F[i].Y)) * KrokX));
} catch(ArgumentOutOfRangeException) {
    Console.WriteLine("i={0},j={1},|invF|={2},|F|={3}",
        i, j, invF.Length, F.Length);
    throw;
}

那應該告訴您問題出在哪里。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM