我的问题是双重的。
我有一个数组:
double [] temperature = {60.9, 62.6, 67.4, 71.5, 77.1, 81.2, 82.4, 82.5, 81.1, 75.3, 68.8, 63.0};
当我尝试使用以下方法将这些华氏度值转换为摄氏度或开尔文时:
for(int index = 0; index <= temperature.length; index++) {
temperature[index] = temperature[index] * tempConverter;
averageTemp += temperature[index];
}
我在temperature[index = temperature[index] * tempConverter;
上得到一个 ArrayIndexOutOfBoundsException
- 为什么我会收到此错误?
- 如何解决此问题并重新分配我的值?
将 for 循环更改为使用<
而不是<=
:
for(int index = 0; index < temperature.length; index++)
考虑一个包含一个元素的数组。这将使array.length
等于1
,如果你使用<=
,你会检查array[0]
和array[1]
......但你知道只有一个元素。这就是您改用<
的原因。
从索引0开始的长度为 n 的数组的最后一个索引为n-1。
目前,您的循环将从0变为n(<= n
(,这将使其在到达索引n时超出保留空间的范围。相反,您需要从0到n个独占(< n
(,如下所示:
for(int index = 0; index < temperature.length; index++) {
...
}
考虑长度为 3 的数组,其中元素表示自己的索引:
a = [0, 1, 2]
尝试访问索引 = 数组长度 (3( 处的元素将不起作用,因为数组中没有索引 3 处的元素。