我在Android电子市场上有几款应用。当我收到用户的错误报告时,通常我能够识别问题,修补代码并更新到固定版本。
但最近两次我收到了奇怪的Force Close报告,我无法解释。最新的情况来自标准的OpenGL规范化例程:
for (int x=0; x<maxX; x++) {
for (int y=0; y<maxY; y++) {
float d = (float) (1.0f / ( Math.sqrt( vertex[x][y][0]*vertex[x][y][0] + vertex[x][y][1]*vertex[x][y][1] + vertex[x][y][2]*vertex[x][y][2] )));
vertex[x][y][0] = vertex[x][y][0] * d;
vertex[x][y][1] = vertex[x][y][1] * d; <--exception here
vertex[x][y][2] = vertex[x][y][2] * d;
}
}
我在行“vertex [x] [y] [1] = vertex [x] [y] [1] * d;”
上得到一个ArrayIndexOutOfBoundsException由于程序的结构,这对我来说似乎不可能,但也因为“vertex [x] [y] [1]”在上面引用了两行!
这有什么办法可能是因为用户有设备或操作系统有缺陷?我不能解释它。