1

我应该指出我是这方面的初学者吗?

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;
}           

当我尝试编译时,我得到一个“不兼容的类型”错误,其中“amt”return amt标记为红色。有人知道为什么吗?

4

3 回答 3

4

您的方法averageMonthlyTemp被指定返回一些 type 的值double,但您的amt变量实际上是 a double[]。要么averageMonthlyTmp返回一个s数组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在你的第一个 for 循环中,如果你替换为,代码会更干净,每次i += 7也会增加7。i
  • 您不需要(int)在行中的 0 之前放置sum = (int) 0;,因为 Java 知道,当您编写时0,您的意思是int.
于 2013-11-10T03:23:32.210 回答
1

返回值 amt 是double[]. 但是该函数仅返回一个double 值(不是 double 数组)。所以尝试将函数重命名为

double [] averagemonthlytemp()
{

}
于 2013-11-10T03:50:08.477 回答
1

您的方法定义averageMonthlyTemp说它应该返回 a double,这是数据类型的单个值,double但您返回amt的是双精度数组,这就是编译器抱怨的原因。因此,您可以更改方法定义以返回数组或返回单个值。

于 2013-11-10T03:37:07.280 回答