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