以下代码会一直运行,直到它引发h
-2147483648
为h=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}}
答案 0 :(得分:1)
如果迭代器的条目多于Integer.MAX_VALUE
,则会出现此问题。
h
会递增,直到达到Integer.MAX_VALUE
。在下一个增量中,整数溢出并变为Integer.MIN_VALUE=-2147483648
。
然后,由于负索引,表达式powerArray[-2147483648]
失败。