簡體   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