2016-04-11 15 views
0

Meine Standardabweichung in diesem Programm wird als 0 ausgegeben und ich weiß nicht, was ich falsch mache. Ich bin seit Stunden hier festgefahren, bitte hilf mir.Standardabweichung Ausgabe als 0, wie zu beheben?

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); 
} 

Antwort

1

Hier ist ein fiddle

Auch habe ich den Code geändert, die jetzt funktionieren sollen und Sie korrektes Ergebnis.

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

Ich weiß nicht einmal, was LINQ ist. Ich versuche nur herauszufinden, warum meine Standardabweichung 0 ausgibt ....... –

+0

@RyanHorner Ich habe meine Antwort geändert. Da Sie LINQ nicht kennen, habe ich die LINQ-Teile entfernt und die fehlende Logik für Sie hinzugefügt. –

+0

Danke für die Aktualisierung! Aber ich bekomme immer noch falsche Ergebnisse. Ich gab 100, 200 und 300 ein und sagte, dass die Standardabweichung dieser 3 Zahlen 81.64965809277261 –