2016-04-11 5 views
0

このプログラムの私の標準偏差は0として出力されており、私が間違っていることはわかりません。私はこれに何時間も拘束されています、助けてください。ここで標準偏差を0として出力する方法、修正方法は?

public static void main(String args[]) 
{ 
    Scanner scan = new Scanner(System.in); 

    System.out.println("How many numbers do you want to calculate?"); 
    int n = scan.nextInt(); 

    double a[] = new double[(int) n];  // casting n to a double 
    double sum = 0.0; 
    double sd = 0.0; 

    System.out.println("Fill in the values for all " + n + " numbers."); 
    for(int i = 0; i < a.length; i++) 
    { 
     a[i] = scan.nextDouble(); 
     sum = sum + a[i]; 
    } 

    double average = sum/a.length; 

    for(int i = 0; i < a.length; i++) 
    { 
      a[i] = Math.pow((a[i]-average),2);  // need help here 
    } 


    System.out.println("The Mean of the " + n +" numbers is " + average); 
    System.out.println("The Standard Deviation of the " + n + " numbers is " + sd); 
} 

答えて

1

はまた、私は今、仕事、あなたに正しい結果を与える必要がありますあなたのコードを変更したfiddle

です。

public static void main(String args[]) 
{ 
    Scanner scan = new Scanner(System.in); 

    System.out.println("How many numbers do you want to calculate?"); 
    int n = scan.nextInt(); 

    double a[] = new double[(int) n];  // casting n to a double 
    double sum = 0.0; 
    double sqrSum = 0.0; 
    double sd = 0.0; 

    System.out.println("Fill in the values for all " + n + " numbers."); 
    for(int i = 0; i < a.length; i++) 
    { 
     a[i] = scan.nextDouble(); 
     sum = sum + a[i]; 
    } 

    double average = sum/a.length; 

    //Perform the Sum of (value-avg)^2 
    for(int i = 0 ; i < a.length ; i++) 
    { 
     sqrSum = sqrSum + Math.pow(a[i] - average, 2); 
    } 
    sd = Math.sqrt(sqrSum/(a.length - 1)); 


    System.out.println("The Mean of the " + n +" numbers is " + average); 
    System.out.println("The Standard Deviation of the " + n + " numbers is " + sd); 
} 
+0

私はLINQについて知りません。私の標準偏差が0を出力している理由を理解しようとしています。 –

+0

@RyanHorner私は自分の答えを修正しました。あなたがLINQについて知りませんでしたので、私はLINQの部分を削除し、欠落しているロジックを追加しました。 –

+0

更新ありがとうございます!しかし、私はまだ間違った結果を得ています。私は100,200,300を入力し、それらの3つの数値の標準偏差が81.64965809277261 –

関連する問題