我不知道为什么我会遇到一个超出范围的例外?

时间:2010-08-05 21:32:54

标签: android arrays

我不知道为什么会产生一个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; }

2 个答案:

答案 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的类型是什么(出于同样的原因)?