2013-12-16 71 views
-1

所以我正在做一個任務和幾乎所有的方法和返回工作。我的代碼到目前爲止應該打印數組中的數字,然後它將這些數字和平均值。我必須用他們給出的確切格式來使用我給出的方法,但我不確定爲什麼平均值出錯。它打印521674.2作爲明顯錯誤的平均值。這是我的代碼:爲什麼我在我的java代碼中得不到正確的平均值?

public class Statistics 
{ 

    public static void main(String[] args) 
    { 
     int[] nums = new int[]{5, 2, 1, 6, 7}; 

     printArray(nums); 
     average(nums); 
     double store = average(nums); 
     System.out.println(store); 
    } 


    public static void printArray(int[] nums) { 
     for(int i = 0; i < nums.length; i++){ 
      System.out.print(nums[i]); 
      } 
    } 


    public static double average(int[] values) { 
     int sum = 0; 
     double average; 

     for(int i=0; i < values.length; i++){ 
      sum = sum + values[i]; 
     } 
     average = (double)sum/values.length; 
     return average; 
+3

嗯,因爲'printArray'? –

+0

爲什麼不使用'java.util.Arrays.toString()'? –

回答

5

實際上,印刷陣列(52167),然後將平均值(4.2)。

爲了改善這一點,您可能需要在printArray的末尾有一個System.out.println();,以便輸出在自己的行上。

您可能還希望有一個分隔符,如,,以便打印5,2,1,6,7。例如:

public static void printArray(int[] nums) { 
    for (int i = 0; i < nums.length - 1; i++) { 
     System.out.print(nums[i]); 
     System.out.print(","); 
    } 
    if (nums.length > 0) { // make sure array isn't empty 
     System.out.println(nums[nums.length - 1]); 
    } 
} 
1

目前你的代碼打印陣列的內容,並在它們之間沒有空格在同一行的平均水平。卸下printArray()調用,你可以看到,這將只輸出平均4.2,這是正確的:

public static void main(String[] args) { 
    int[] nums = new int[] { 5, 2, 1, 6, 7 }; 

    //printArray(nums); 
    average(nums); 
    double store = average(nums); 
    System.out.println(store); 
} 
2

沒有什麼錯與您的代碼。由於輸出,你會感到困惑。

如果您對與printArray()有關的行進行註釋,或將其System.out.print()更改爲System.out.println(),則會看到您期望的結果。

0

你應該使用.println()是打印()然後它會很好

相關問題