如何重新分配一维数组中的值?
How can I re-assign values in a one-dimensional array?
我的问题有两个。
我有一个数组:
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 时,保留 space 的边界。相反,你需要从 0 到 n exclusive (< n
),像这样:
for(int index = 0; index < temperature.length; index++) {
...
}
想想长度为 3 的数组,其中的元素代表它们自己的索引:
a = [0, 1, 2]
尝试访问索引 = 数组长度 (3) 处的元素将不起作用,因为数组中索引 3 处没有元素。
我的问题有两个。
我有一个数组:
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;
- 为什么会出现此错误?
- 如何解决此问题并重新分配我的值?
将您的 for 循环更改为使用 <
而不是 <=
:
for(int index = 0; index < temperature.length; index++)
考虑一个只有一个元素的数组。这将使 array.length
等于 1
,如果您使用 <=
,您将同时检查 array[0]
和 array[1]
...但您知道只有一个元素.这就是您使用 <
的原因。
从索引 0 开始的长度为 n 的数组的最后一个索引在 n-1。
目前你的循环将从 0 到 n 包括在内(<= n
),这将使它出来当它到达索引 n 时,保留 space 的边界。相反,你需要从 0 到 n exclusive (< n
),像这样:
for(int index = 0; index < temperature.length; index++) {
...
}
想想长度为 3 的数组,其中的元素代表它们自己的索引:
a = [0, 1, 2]
尝试访问索引 = 数组长度 (3) 处的元素将不起作用,因为数组中索引 3 处没有元素。