繁体   English   中英

Java中不兼容的类型

[英]incompatible types in java

我应该指出我对此是一个乞gg吗?

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

指定您的方法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(含0),所以if (j % 7 == 6)可以替换为if (j == 6) 同样,看起来代码(计算平均值)可以在第二个for循环之后直接执行。
  • 在您的第一个for循环中,如果将i = i + 7替换为i += 7 ,则代码会更整洁,这也会使i每次增加7。
  • 您无需在sum = (int) 0;行中将(int)放在0之前sum = (int) 0; ,因为Java知道当您只写0 ,就意味着一个int

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

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

double [] averagemonthlytemp()
{

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM