我不知道为什么会产生一个ArrayOutOfBoundsException!我很可能忽略了一些东西,因为我太累了,但如果有人能告诉我什么是错的,我会很感激。感谢。
// array declaration
public int CircleLeft[] = new int[mIPAWidth];
// this is my loop that generates the error:
for(px = 0; px <= mIPAWidth - 1; px++){
py =(int) m.sqrt(r^2 - (px-mIPAWidthHalf)^2) + mIPAHeightHalf;
Log.w(getClass().getName(), "mIPAWidth = " + mIPAWidth + ", index is: " + px);
CircleLeft[px] = py; }
答案 0 :(得分:2)
与Luther Blissett的回答一起......
您是在实例化数组和开始mIPAWidth
循环之间修改for
吗?我会将您的for
条件更改为以下内容:
for(int px = 0; px < CircleLeft.length; px++)
通过这种方式,您知道px
的类型,并且您知道您正在引用CircleLeft
数组的实际长度。它可能无法解决您的错误,但它仍然是一个好主意。
答案 1 :(得分:1)
px的类型是什么?如果它是双倍的,那么你可能会遇到与<=
的错误比较(比较与double的相等几乎从不正确)。尝试使用规范循环for(px = 0; px < mIPAWidth ; px++)
或更好,使循环索引成为整数。
此外,mIPAWidth
的类型是什么(出于同样的原因)?