2016-04-10 2 views
0

Mon programme prend un tableau de nombres de l'utilisateur et calcule ces nombres dans la moyenne et dans l'écart type. J'ai un problème avec ma partie de la déviation standard et je ne suis pas sûr de le faire correctement. Voici ce que j'ai:Calcul et impression de l'écart-type d'un tableau défini par l'utilisateur

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; 
    int ifLoop = 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]; 
     ifLoop++; 

     if(ifLoop == a.length) 
     { 
      sd = sd + Math.pow(a[i] - (sum/a.length), 2);  //THIS IS WHERE I NEED HELP 
     } 
    } 

    System.out.println("The Mean of the " + n +" numbers is " + sum/a.length);    // this line finds the average 
    System.out.println("The Standard Deviation of the " + n + " numbers is " + sd); 
} 

entrée Exemple: 30,7 190,9 Sortie: La moyenne des 4 chiffres est 61,65 L'écart type de 4 chiffres est 2270,5225 Je sais que c'est faux parce que le 2270.5225 est faux et je ne suis pas sûr de savoir comment mettre en œuvre correctement la formule de déviation standard. Toute aide est fortement appréciée.

Répondre

0

utiliser la méthode suivante pour calculer l'écart type après entrée du nombre à tout réseau. Vous devez d'abord calculer moyen. Après ce SD. Doit utiliser 2 boucles.

double calculateSD(double[] values) { 
    double mean = 0.0; 
    double sum = 0.0; 
    int n = values.length; 
    for (double value : values) { 
     sum += value; 
    } 
    mean = sum/n; 
    sum = 0.0; 
    for (double value : values) { 
     sum += Math.pow(mean - value, 2); 
    } 
    return sum/n; 
}