2016-04-16 4 views
0

Ich versuche, die Varianz eines vom Benutzer eingegebenen Datensatzes zu berechnen. Wenn ich jedoch mein Programm starte, kann ich die Fehlervarianz in der Klasse Test nicht auf gegebene Typen anwenden. Dies ist mein Code so weit:Compiler-Fehler beim Berechnen der Varianz eines Datensatzes

public static double variance(ArrayList<Double> numbers, double mean) { 

    double variance = 0; 
    for (int i = 0; i <numbers.size(); i++) { 
     variance = variance + Math.pow((numbers.get(i) - mean(numbers)), 2); 
    } 
    return variance/numbers.size(); 
} 
public static void main(String[] args) { 

    Scanner keyboard = new Scanner(System.in); 
    System.out.println("Enter data set: "); 
    ArrayList<Double> nums = new ArrayList<Double>(); 

    while (keyboard.hasNextDouble()) { 
     nums.add(keyboard.nextDouble()); 
    } 
    double numbs = mean(nums); 
    System.out.println("Mean = " + numbs); 
    double numbs2 = variance(nums); 
    System.out.println("Variance = " + numbs2); 
    } 
} 

Ich habe eine Methode über das Abweichungsverfahren, das den Mittelwert der Arraylist berechnet, wäre das in sowieso nützlich sein, obwohl ich ein Doppel Mittelwert in der Varianz-Methode initialisiert?

Antwort

0
  1. Passen Sie Ihre variance Methode ein Argument zu akzeptieren, wie so

    public static double variance(ArrayList<Double> numbers) { 
         double variance = 0; 
         for (int i = 0; i <numbers.size(); i++) { 
          variance = variance + Math.pow((numbers.get(i) - mean(numbers)), 2); 
         } 
         return variance/numbers.size(); 
        } 
    
  2. Definieren Sie die Methode mean ähnlich, und der Rest sollte in Ordnung sein.

    public static double mean(ArrayList<Double> numbers) { 
        double sum = 0; 
        for (int i = 0; i < numbers.size(); i++) { 
        sum += numbers.get(i); 
        } 
        return sum/numbers.size(); 
    } 
    
+0

Vielen Dank @Dadani –

+0

Kein Problem, Happy Coding ... – Dadani

0

Ihre variance Methode Parameter benötigen, aber wenn Sie es Ihnen rufen nur ein param

+0

Also sollte ich der "doppelten mean" Parameter loswerden? Oder gibt es eine Möglichkeit, es zu verwenden, damit ich es nicht loswerden und in meinem Code implementieren muss? –

+1

Wo ist die "Mean" -Methode definiert? Diese – Dadani

+0

ist die mittlere Methode: public static Doppel mean (Array Zahlen) { \t \t \t \t Doppel sum = 0; \t \t für (int i = 0; i