2014-09-05 98 views
-2

它說不能將double []加倍。我在這裏做錯了什麼?我可以調用這個方法來添加到程序中早些時候要求的數組中。我之前問過,顯然是在錯誤的地方,有人說檢查我的方法返回類型,我回來了。對我來說他們是一樣的權利?雙[]和IM返回總和[]爲什麼這樣說錯了類型我能做些什麼來修復它

public static double[] add(double[] operand1, double[] operand2){ 

     double[] sum = new double[operand1.length]; 
     for (int i = 0; i < operand1.length; ++i) { 
      sum[i] = operand1[i] + operand2[i]; 

      return sum[i]; 
+4

錯誤消息非常明確...... – 2014-09-05 17:41:56

+0

您需要關閉大括號...並返回'sum'。 – manouti 2014-09-05 17:42:38

+0

關於您的問題中的「保留」:想象一下,您的編譯器突然決定變爲非確定性,並停止說「錯誤的類型」。 – 2014-09-05 18:01:31

回答

4

該方法的返回值是double[],即雙陣列。但是,你正在返回一個雙。

您應該返回sum而不是sum[i]。你應該回到for循環之外。

public static double[] add(double[] operand1, double[] operand2) 
{ 
    double[] sum = new double[operand1.length]; 
    for (int i = 0; i < operand1.length; ++i) { 
     sum[i] = operand1[i] + operand2[i]; 
    } 
    return sum; 
} 

你必須留意的是,你會得到一個異常,如果operand2數組的長度比operand1數組的長度短。您應該決定如何處理它(要麼需要兩個輸入數組具有相同的長度,要麼將輸出數組的長度設置爲輸入數組長度的最小值)。

+1

它不會編譯(對於不同的原因)如果返回不在for循環之外。 – Makoto 2014-09-05 17:42:57

+0

@Makoto的確如此。 – Eran 2014-09-05 17:49:34

+0

@Eran現在非常感謝你的工作。此外,我確實在程序中有一些確保數組數量相同的數字,非常感謝你! – 2014-09-05 18:08:18

0

問題是你不是返回整個數組,而是隻返回其中的一部分。所以sumdouble[](=雙重數組)的類型,而寫入爲sum[i]的數組中的一個值是double。由於你的方法說它會返回一個double[],所以你試着返回一個double,它會產生一個類型不匹配。自從開始一個循環,並恢復其執行將毫無意義的第一次,我猜測你試圖做的是以下幾點:

public static double[] add(double[] operand1, double[] operand2){ 

    double[] sum = new double[operand1.length]; 
    for (int i = 0; i < operand1.length; ++i) { 
     sum[i] = operand1[i] + operand2[i]; 
    } 
    return sum; 
} 

循環結束填充之後這將返回整個陣列。

+0

是的,我認爲你把這個人放在你上面,但那是問題,我正在與我的任務一起移動。謝謝 – 2014-09-05 20:09:44