2017-07-17 18 views
-2

最大10個の配列の平均を計算するプログラムを作成する必要があります。ユーザ 2.Calculate結果ユーザー入力からの配列による平均の計算

最初にユーザ 3.Printによって入力された数値の平均値が入力した番号し1.Get :

プログラムはにメソッドを使用して:ここに要求されメソッドは引数を取らず、ユーザーが入力したdouble型の配列を返します。

2番目のメソッドは、唯一の引数として倍精度の配列(上記の最初のメソッドの戻り値)をとり、2倍(平均)を返す必要があります。

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()の配列は決して初期化されません。 scannerの値を配列に代入する必要があります。参照してください - 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値に変換し、double配列に格納します。

通常はユーザー入力から数字を取得する方法ではありませんが、一度に入力したい場合は、これが有効です。