我是否应该指出我是初学者?
double averageMonthlyTemp() {
double[] amt = new double[52];
int sum = 0;
int index = 0;
for (int i = 0; i < temp.length - 1; i = i + 7) {
//where temp is an existiing
//previously initialized array
//of 365 elements, form 0 to 364
for (int j = 0; j < 7; j++) {
sum = sum + temp[i + j];
if (j % 7 == 6) {
double average = ((double) sum) / 7;
amt[index] = average;
index++;
sum = (int) 0;
}
}
}
return amt;
}
当我尝试编译时,出现“不兼容类型”错误,return amt
处的“amt”标记为红色。有人知道为什么吗?
答案 0 :(得分:4)
您的方法averageMonthlyTemp
被指定为返回double
类型的某些值,但您的amt
变量实际上是double[]
。要使averageMonthlyTmp
返回double
的数组,或执行以下操作:
double averageMonthlyTmp(int month) {
...
return tmp[month]; // could be made more efficient by only calculating the temperature for one month
}
关于代码的其他几点说明:
j
从0到6(含),if (j % 7 == 6)
可以替换为if (j == 6)
。此外,看起来代码(计算平均值)可以在第二个for
循环之后直接进行。i = i + 7
替换为i += 7
,代码将会更清晰,每次也会将i
增加7。(int)
放在行sum = (int) 0;
中的0之前,因为Java知道当您刚写0
时,您的意思是int
}。答案 1 :(得分:1)
averageMonthlyTemp
的方法定义表示它应该返回double
,这是数据类型double
的单个值但是您要返回amt
这是一个双数组,这就是编译器抱怨的原因。因此,您可以更改方法定义以返回数组或返回单个值。
答案 2 :(得分:1)
返回的值amt是double[]
。但该函数仅返回double
值(不是double数组)。所以尝试将该函数重命名为
double [] averagemonthlytemp()
{
}