如何在一维数组中重新分配值?



我的问题是双重的。

我有一个数组:

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

  1. 为什么我会收到此错误?
  2. 如何解决此问题并重新分配我的值?

将 for 循环更改为使用<而不是<=

for(int index = 0; index < temperature.length; index++)

考虑一个包含一个元素的数组。这将使array.length等于1,如果你使用<=,你会检查array[0]array[1]......但你知道只有一个元素。这就是您改用<的原因。

从索引0开始的长度为 n 的数组最后一个索引为n-1

目前,您的循环将从0变为n(<= n(,这将使其在到达索引n时超出保留空间的范围。相反,您需要从0n个独占(< n(,如下所示:

for(int index = 0; index < temperature.length; index++) {
...
}

考虑长度为 3 的数组,其中元素表示自己的索引:

a = [0, 1, 2]

尝试访问索引 = 数组长度 (3( 处的元素将不起作用,因为数组中没有索引 3 处的元素。

最新更新