現在、10個の数値の配列の平均と標準偏差を計算するプログラムを作成する必要があります。平均calculateMeanメソッドはうまくいくようですが、calculateStandardDeviationメソッドのロジックに欠陥があります。正確にそれがどこにあるのかわからない。どんなアドバイス/ポインタでも大変感謝しています!標準偏差計算(Java)
public static void main(String[] args) {
Scanner input = new Scanner (System.in);
System.out.println("Please enter ten numbers: ");
double [] set = new double [10];
for (int i = 0; i < 10; i++){
set[i] = input.nextDouble();
}
/*for (double j: set){
System.out.println(j);
}*/
System.out.println(calculateMean(set));
System.out.println(calculateStandardDeviation(set));
}
public static double calculateMean(double[] m){
double sum = 0;
for (int i = 0; i<m.length; i++){
sum = sum + m[i];
}
double mean = (sum)/(m.length);
return mean;
}
public static double calculateStandardDeviation(double[] sd){
double sum = 0;
double newSum = 0;
double [] newArray = new double [10];
for (int i = 0; i<sd.length; i++){
sum = sum + sd[i];
}
double mean = (sum)/(sd.length);
for (int j = 0; j<sd.length; j++){
newArray[j] = ((sd[j] - mean) * (sd[j] - mean));
newSum = newSum + newArray[j];
}
double squaredDiffMean = (newSum)/(sd.length);
double standardDev = (Math.sqrt(squaredDiffMean));
return standardDev;
}
は、なぜあなたは10に' newArray'のサイズを設定するのですか? 'newArray'のサイズを' sd'配列のサイズに合わせて設定します。 (また、 'calculateMean(double [])'というメソッドを素敵に作成しているのを見て、 'calculateStandardDevation(double [])'メソッドで平均を計算するときに呼び出すべきです) – Bobulous
2つの提案:(1)平均を計算する際に配列がnullでも空でもないことを確認する、(2)標準偏差の計算が最適ではないと思う。より簡単な方法があります。少ないコードです。 – duffymo
「私のcalculateStandardDeviationメソッドのロジックに欠陥があります」というのはどういう意味ですか?結果は間違っていますか?私はあなたのプログラムを2,4,4,4,5,5,7,9,9,10の入力で走らせ、平均値と標準偏差としてそれぞれ5.35 2.5475478405713994を与えました。それは正しいようですか? – MojoJojo