为什么我在index = -2147483648(= Integer.MIN_VALUE)得到IndexOutOfBoundsException?

时间:2016-12-06 14:47:25

标签: java for-loop indexoutofboundsexception

以下代码会一直运行,直到它引发h -2147483648h=0为止。

在开头float[] powerArray = new float[8760]; int h = 0; for (TShortIterator it = heightData.iterator(); it.hasNext();) { short wspeed = it.next(); if (h < 8760) { powerArray[h] = Math.min(wspeed, 4); } h++; } ,它只会递增,永不递减。它怎么会变成消极的?

{{1}}

1 个答案:

答案 0 :(得分:1)

如果迭代器的条目多于Integer.MAX_VALUE,则会出现此问题。

h会递增,直到达到Integer.MAX_VALUE。在下一个增量中,整数溢出并变为Integer.MIN_VALUE=-2147483648

然后,由于负索引,表达式powerArray[-2147483648]失败。