我的问题有两个方面。我有一个数组: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];}我得到一个 ArrayIndexOutOfBoundsException temperature[index = temperature[index] * tempConverter;为什么会出现此错误?如何解决此问题并重新分配我的值?
2 回答
慕桂英546537
TA贡献1848条经验 获得超10个赞
更改您的 for 循环以使用<
而不是<=
:
for(int index = 0; index < temperature.length; index++)
考虑一个只有一个元素的数组。这将array.length
等于1
,如果您使用,<=
您将同时检查array[0]
和array[1]
...但您知道只有一个元素。这就是为什么你使用它<
。
蛊毒传说
TA贡献1895条经验 获得超3个赞
从索引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 处没有元素。
添加回答
举报
0/150
提交
取消