越界异常,ArrayIndexOutOfBoundsException:257 java

越界异常,ArrayIndexOutOfBoundsException:257 java,java,indexoutofboundsexception,Java,Indexoutofboundsexception,各位。我有一个关于ArrayIndexOutOfBoundsException的问题 我知道ArrayIndexOutOfBoundsException错误通常来自错误的空间分配,我从stackoverflow搜索了几十个关于ArrayIndexOutOfBoundsException的问题,但没有找到我的解决方案 下面是我的代码 public void doKDE2D2() { double d = 0; double r = 0; double[][] cor = n

各位。我有一个关于ArrayIndexOutOfBoundsException的问题

我知道ArrayIndexOutOfBoundsException错误通常来自错误的空间分配,我从stackoverflow搜索了几十个关于ArrayIndexOutOfBoundsException的问题,但没有找到我的解决方案

下面是我的代码

public void doKDE2D2()
{
    double d = 0;
    double r = 0;
    double[][] cor = new double[n + 1][n + 1];

    gx = makeSequence( lims[0], lims[1], n + 1 );
    gy = makeSequence( lims[2], lims[3], n + 1 );
    z = new double[n][n];

    for ( int NormalizedValueXCnt = 0; NormalizedValueXCnt < x.length; NormalizedValueXCnt++ )
    {
        int startBlockX = blockSequence( x[NormalizedValueXCnt] )[0];
        int endBlockX = blockSequence( x[NormalizedValueXCnt] )[1];
        int startBlockY = blockSequence( y[NormalizedValueXCnt] )[0];
        int endBlockY = blockSequence( y[NormalizedValueXCnt] )[1];

        for ( int CntGridBlockX = startBlockX; CntGridBlockX < endBlockX; CntGridBlockX++ )
        {

            for ( int CntGridBlockY = startBlockY; CntGridBlockY < endBlockY; CntGridBlockY++ )
            {
                double dx = x[NormalizedValueXCnt] - gx[CntGridBlockX];
                double dy = y[NormalizedValueXCnt] - gy[CntGridBlockY];

                r = Math.sqrt( ( dx * dx ) - ( dy * dy ) );

                if ( r < h )
                {
                    d = ( r / h );
                    cor[CntGridBlockX][CntGridBlockY] += kCalculation( d ) * c[NormalizedValueXCnt];

                }
                else
                {

                   // cor[lengthOfGridBlockX][lengthOfGridBlockY] += 0;

                }

            }
        }
    }

    for ( int i = 0; i < n; i++ )
    {
        for ( int j = 0; j < n; j++ )
        {
            z[i][j] = ( cor[i][j] + cor[i][j + 1] + cor[i + 1][j] + cor[i + 1][j + 1] ) / 4;
        }
    }

}


public double[] makeSequence( double start, double end, int length )
{
    double[] seq = new double[length];
    double by = ( end - start ) / ( length - 1 );
    double value = start;
    for ( int i = 0; i < length; i++, value += by )
    {
        seq[i] = value;
    }
    return seq;
}

private void setupLims(double lengthOfGraph )
{
    lims = new double[4];
    lims[0] = -1 * (lengthOfGraph/2);
    lims[1] = (lengthOfGraph/2);
    lims[2] = -1 * (lengthOfGraph/2);
    lims[3] = (lengthOfGraph/2);

}
对doKDE2D2方法的改进。
有人有主意吗?提前谢谢。

欢迎光临。我可以在出现问题的语句之前建议一些调试输出语句,以帮助您了解其发生的原因。您在哪里声明数组“x”?@MrPublic它是上面定义的全局变量(不在我上载的代码中)
  double dx = x[NormalizedValueXCnt] - gx[CntGridBlockX];