java中不兼容的类型

时间:2013-11-10 03:20:27

标签: java

我是否应该指出我是初学者?

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”标记为红色。有人知道为什么吗?

3 个答案:

答案 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循环之后直接进行。
  • 在您的第一个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()
{

}