2016-04-10 16 views
0

Programım, kullanıcıdan bir dizi sayı alır ve bu sayıları orta ve standart sapma olarak hesaplar. Standart Sapma bölümümle ilgili bir sorun yaşıyorum ve bunu doğru bir şekilde yapıp yapmadığımı bilmiyorum. İşte ne var:Kullanıcı tanımlı bir Dizinin Standart Sapmasının Hesaplanması ve Yazdırılması

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

Örnek girişi: 30,7 190,9 Çıktı: 4 sayı ortalama 61.65 4 sayı Standart Sapma 2270,5225 olan bu olduğunu biliyorum Yanlış 2270.5225 sahte olduğundan ve Standart Sapma formülünü doğru bir şekilde nasıl uygulayacağından emin değilim. Herhangi bir yardım çok takdir edilmektedir.

cevap

0

diziye giriş sonuçta sayıda standart sapmayı hesaplamak için aşağıdaki yöntemi kullanın. İlk olarak ortalama hesaplamanız gerekir. Bundan sonra SD. 2 döngü kullanmak zorunda.

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; 
} 
İlgili konular