2012-12-11 69 views
-2

我試圖讓該程序調用函數arrayAvg並返回一個{1,2}的數組,並返回平均值的1.5倍(這將是1.5)。將整型轉換爲雙精度時遇到困難

這就是我現在的代碼。任何人有一個想法,我要去哪裏錯了? :X

import java.util.*; 

public class Main 
{ 
    public static double arrayAvg(int[] array){ 

     int total = 0; 
     int count = 1; 
     double average = 0.0; 

     for(int item : array){ 
      total=total+item;count=count+1; 
     } 
     double dTotal = (double)total; 
     double dCount = (double)count; 
     average = (dTotal/dCount); 
     return average; 
    } 

    public static void main(String args[]){ 

     int[] input = {1,2}; 
     double result = arrayAvg(input); 
     System.out.println(result); 
    } 
} 
+3

你不能不提到什麼是錯的。 – leppie

+0

你怎麼知道你做錯了什麼?一目瞭然,我沒有看到你的代碼有什麼問題。它編譯和運行?如果不是,編譯它會發生什麼?當你運行它會發生什麼? –

+2

@代碼大師:有了這樣的格式,確實很難發現細微的問題; p – leppie

回答

2

初始化計數爲0而不是1

1

您的邏輯確定count是錯誤的。它應該從0開始不是1.

此外,您可以簡單地獲取數組長度。

+0

我不知道如何設法忽略這一點,謝謝! – jhya

+3

@ HeinrichArnold:你的代碼格式非常糟糕,並且代碼非常難以閱讀;)嘗試使用IDE的格式化函數。 – leppie

0

其實,有你的邏輯出了問題, 你已經初始化

int count = 1; 

這是不對的, 你應該初始化變量以0如下

int count = 0; 

以下更改代碼

public class Main { 
    public static double arrayAvg(int[] array) { 
     int total = 0; 
     int count = 0; 
     double average = 0.0; 
     for (int item : array) { 
      total = total + item; 
      count = count + 1; 
     } 
     double dTotal = (double) total; 
     double dCount = (double) count; 
     average = (dTotal/dCount); 
     return average; 
    } 

    public static void main(String args[]) { 
     int[] input = { 1, 2 }; 
     double result = arrayAvg(input); 
     System.out.println(result); 
    } 
} 

輸出

1.5 
1

爲什麼需要計數?你基本上需要數組中的數值來分割它。 只需使用arry.length,這會回報你的元素數量在數組中,並用它來劃分

int len = array.length; 
double dTotal = (double) total; 
double dCount = (double) len; 
average = (dTotal/dCount); 
return average;