2017-07-17 103 views
-2

我需要創建一個程序來計算最多10個數組的平均值。這裏是要求:用用戶輸入計算平均數組

程序使用方法: 1.Get用戶 2.Calculate用戶 3.打印輸入效果

第一個平均的數字輸入的數字方法應該不帶任何參數並返回用戶輸入的雙精度數組。

第二種方法應該將雙精度數組(上面第一個方法的返回值)作爲其唯一參數並返回一個double(平均值)。

第三種方法應該將雙精度數組和雙精度數值作爲參數,但是沒有返回值。

我嘗試了下面的內容,但是我遇到的最大問題(至少我可以告訴)是程序在允許用戶輸入之前打印兩個語句。我知道如何做到這一點,但我想我因爲數組片而感到困惑。非常感謝。

public static void main(String[] args) { 
    double[] userNumbers = printUserNums(); 
    double average = getAverage(userNumbers); 
    printAverage(average, userNumbers); 

} 

public static double[] printUserNums() { 
    Scanner in = new Scanner(System.in); 
    System.out.print("Please enter five to ten numbers separated by spaces: "); 
    double[] userNums = new double[10]; 

    return userNums; 
} 

public static double getAverage(double[] userNums) { 
    Scanner in = new Scanner(System.in); 
    int counter = 0; 
    double average = 0.0; 
    double sum = 0; 

    for (int i = 0; i < userNums.length; i++) { 
     sum = sum + userNums[i]; 

    } 
    if (counter != 0) { 
     average = sum/userNums.length; 
    } 

    return average; 

} 

public static void printAverage(double average, double[] userNums) { 
    System.out.printf("The average of the numbers " + userNums + " is %.2f", average); 

} 

}

+1

爲什麼在'printUserNums()'中創建並返回一個空數組?你甚至沒有閱讀用戶輸入。 – Logan

+0

爲什麼你需要方法的第一行:'getAverage()'? – alfasin

+0

您的方法printUserNums()中的數組永遠不會初始化。您需要將掃描器的值分配給陣列。看到這裏 - https://stackoverflow.com/questions/2795350/how-to-put-a-scanner-input-into-an-array-for-example-a-couple-of-numbers – Amit

回答

0

你永遠要求的數字! 你要問從掃描儀輸入:

String inputValue = in.next(); 

,然後分割你完整的字符串(含空格分隔的數字),使用空間,你的正則表達式來得到的數字:

String[] stringValues = inputValue.split("\\s+"); 

您可能需要進行某種檢查,以確認您的要求中至少有5個值和不超過10個值。 如果檢查通過,只需循環遍歷數組,並使用Double.valueOf(String s)將字符串值轉換爲double值並將它們存儲在雙精度數組中。

這不是我通常會如何從用戶輸入中獲取數字,但如果您想要一次性使用它們,這應該可行。