C#数组索引超出范围错误

Rid*_*ari 6 .net c#

完全披露:这是为家庭作业.

这让我疯了.我正在写一个离散余弦变换函数并且基本完成它,但我遇到了IndexOutOfRange异常.

代码如下:

static int[][] DiscreteCosineTransform(int[][] pIn)
        {
            int[][] cosP = pIn;
            double SumCosP = 0;
            double Cx = 0;
            double Cy = 0;
            Console.WriteLine("Discrete Cosine Transformed Array:");
            for(int i = 0; i < 8; i++)
            {
                if (i == 0)
                    Cx = 1 / Math.Sqrt(2);
                else
                    Cx = 1;
                for(int j = 0; j < 8; i++)
                {
                    if (j == 0)
                        Cy = 1 / Math.Sqrt(2);
                    else
                        Cy = 1;

                    for (int x = 0; x < 8; x++)
                    {
                        for (int y = 0; y < 8; y++)
                        {
                            SumCosP += cosP[x][y] * Math.Cos(((2 * x + 1) * i * Math.PI) / 16) * Math.Cos(((2 * y + 1) * j * Math.PI) / 16);
                        }
                    }
                    pIn[i][j] = (int)(0.25 * Cx * Cy * SumCosP);
                    Console.Write(" " + pIn[i][j] + " ");
                }
                Console.WriteLine();
            }
            Console.WriteLine();
            return pIn;
        }
Run Code Online (Sandbox Code Playgroud)

pIn是:

int[][] P = new int[][]
            {
                new int[]{10,10,10,10,10,10,10,10},
                new int[]{10,20,20,20,20,20,20,10},
                new int[]{10,20,30,30,30,30,20,10},
                new int[]{10,20,30,40,40,30,20,10},
                new int[]{10,20,30,40,40,30,20,10},
                new int[]{10,20,30,30,30,30,20,10},
                new int[]{10,20,20,20,20,20,20,10},
                new int[]{10,10,10,10,10,10,10,10}
            };
Run Code Online (Sandbox Code Playgroud)

Rob*_*vey 15

这条线

for(int j = 0; j < 8; i++) 
Run Code Online (Sandbox Code Playgroud)

应该读

for(int j = 0; j < 8; j++) 

                      ^
Run Code Online (Sandbox Code Playgroud)

  • @MachinationX:不要只是修复错误.问问自己"是什么因素导致我犯了这个错误,我怎么能再也不做了?" 导致错误的因素是使用无意义且视觉上几乎相同的变量名i和j.你能想出i,j,x和y的名字,它们是描述性的,不太可能容易相互混淆吗? (4认同)