• Wir präsentieren Dir heute ein Stellenangebot für einen Java Entwickler - m/w/d in Augsburg, München, Stuttgart oder Bamberg. Hier geht es zur Jobanzeige

Standardabweichung in Java berechnen

A

arhzz

Bekanntes Mitglied
Hallo zusammen!

Ich muss ein Code erstellen der die letzten fünf werte nimmt und daraus den Mittelwert und Standardabweichung berechnet.Ich habe das so gemacht

Java:
public class Statistics {
    static int data[] = new int[5];
    static int cnt;
    static double sum;
    static double mean;
    static double variance;
    
    public static double sum (int[] arr) {
        for(int i = 0; i <arr.length; i++) {
            sum += arr[i];
            cnt++;
        }
        return sum;
    }
    
    public static double mean (int[] arr) {
        return sum/cnt;
    }
    
    public static double variance (int[] arr) {
        for(int i = 0; i < arr.length; i++) {
            variance += Math.pow(data[i] - mean,2);
        }
        return Math.sqrt(variance/cnt);
    }
    
     public static void shiftArray(int[] arr){
        int[] newArr = new int[arr.length];
       
        for(int i = 1; i<newArr.length; i++){
            newArr[i]=arr[i-1];
        }
        
        data = newArr;
    }
    
    static void computeStatistics(int value) {
        shiftArray(data);
        data[0] = value;
        Out.println("Value" + " " + value);
        Out.println("Mean" + " "+ mean);
        Out.println("Deviation"+ " " + variance);
        
    }
    
    public static void main(String[] args) {
        computeStatistics(1);
        computeStatistics(2);
        computeStatistics(3);
        computeStatistics(4);
        computeStatistics(5);
    }
    
}

Allerdings is die ausgabe an der konsole nur 0 bei Mean und Deviation.Ich kann den Fehler nicht finden,ein bisschen Hilfe wäre Super!

Danke im Voraus.
 
A

arhzz

Bekanntes Mitglied
Java:
public class Statistics {
    static int data[] = new int[5];
    static int cnt;
    static double sum;
    static double mean;
    static double variance;
   
    public static double sum (int[] arr) {
        for(int i = 0; i <arr.length; i++) {
            sum += arr[i];
            cnt++;
        }
        return sum;
    }
   
    public static double mean (int[] arr) {
        return sum/cnt;
    }
   
    public static double variance (int[] arr) {
        for(int i = 0; i < arr.length; i++) {
            variance += Math.pow(data[i] - mean,2);
        }
        return Math.sqrt(variance/cnt);
    }
   
     public static void shiftArray(int[] arr){
        int[] newArr = new int[arr.length];
      
        for(int i = 1; i<newArr.length; i++){
            newArr[i]=arr[i-1];
        }
       
        data = newArr;
    }
   
    static void computeStatistics(int value) {
        shiftArray(data);
        data[0] = value;
        Out.println("Value" + " " + value);
        Out.println("Mean" + " "+ mean);
        Out.println("Deviation"+ " " + variance);
        Out.println("Sum" + sum);
        Out.println("Count" + cnt);
       
       
    }
   
    public static void main(String[] args) {
        computeStatistics(1);
        computeStatistics(2);
        computeStatistics(3);
        computeStatistics(4);
        computeStatistics(5);
    }
   
}

Also es gibt nur 0.0 bei sum und 0 bei count.Das habe ich vermutet aber ich verstehe nicht warum? Siehen die methoden die variablen nicht? Was wird dann zuruckgegeben bei den methoden.
 
Zuletzt bearbeitet:
A

arhzz

Bekanntes Mitglied
Asoooo das habe ich irgendwie nicht gesehen,dummer fehler,sorry.Jetzt bekomme ich eine ausgabe,aber sie ist falsch

Java:
public class Statistics {
    static int data[] = new int[5];
    static int cnt;
    static double sum;
    static double mean;
    static double variance;
    
    public static double sum (int[] arr) {
        for(int i = 0; i <arr.length; i++) {
            sum += arr[i];
            cnt++;
        }
        return sum;
    }
   
    public static double mean (int[] arr) {
        return sum(arr)/cnt;
    }
   
    public static double variance (int[] arr) {
        double mean = mean(arr);
        double sum = sum(arr);
        for(int i = 0; i < arr.length; i++) {
            variance += Math.pow(data[i] - mean,2);
        }
        return Math.sqrt(variance/cnt);
    }
   
     public static void shiftArray(int[] arr){
        int[] newArr = new int[arr.length];
      
        for(int i = 1; i<newArr.length; i++){
            newArr[i]=arr[i-1];
        }
       
        data = newArr;
    }
   
    static void computeStatistics(int value) {
        shiftArray(data);
        data[0] = value;
        Out.println("Value" + " " + value);
        Out.println("Mean" + " "+ mean(data));
        Out.println("Deviation"+ " " + variance(data));
   
       
    }
   
    public static void main(String[] args) {
        computeStatistics(1);
        computeStatistics(2);
        computeStatistics(3);
        computeStatistics(4);
        computeStatistics(5);
    }
   
}

So sieht die ausgabe Aus.

Value 1
Mean 0.2
Deviation 0.23094010767585035
Value 2
Mean 0.3
Deviation 0.37806525010020875
Value 3
Mean 0.5142857142857142
Deviation 0.5351635264103861
Value 4
Mean 0.8
Deviation 0.6932822083291009
Value 5
Mean 1.1538461538461537
Deviation 0.8448454752135517

Also der Mittelwert bei 1 sollte 1 sein und nicht 0,2.Ich verstehe nicht warum das so ist,die formel fur den mittelwert sollte passen oder?
 
mrBrown

mrBrown

Super-Moderator
Mitarbeiter
Wie schon gesagt: lass dir zusätzlich mal sum und cnt ausgeben.
 
A

arhzz

Bekanntes Mitglied
Ok I hab jetzt gesehen das sum und cnt falsch berechnet sind.Ich hab das mit sum erledigt aber cnt ist immer noch falsch bei mir

Java:
public class Statistics {
    static int data[] = new int[5];
    static int cnt;
    
    public static double sum (int[] arr) {
        double sum = 0.0;
        cnt = 0;
        for(int i = 0; i <arr.length; i++) {
            sum += arr[i];
            cnt++;
        }
        return sum;
    }
   
    public static double mean (int[] arr) {
        return sum(arr)/cnt;
    }
   
    public static double variance (int[] arr) {
        double mean = mean(arr);
        double sum = sum(arr);
        double variance = 0.0;
        for(int i = 0; i < arr.length; i++) {
            variance += Math.pow(data[i] - mean,2);
        }
        return Math.sqrt(variance/cnt);
    }
   
     public static void shiftArray(int[] arr){
        int[] newArr = new int[arr.length];
      
        for(int i = 1; i<newArr.length; i++){
            newArr[i]=arr[i-1];
        }
       
        data = newArr;
    }
   
    static void computeStatistics(int value) {
        shiftArray(data);
        data[0] = value;
        Out.println("Value" + " " + value);
        Out.println("Count" +" "+ cnt);
        Out.println("Mean" +" " + mean(data));
        Out.println("Deviation"+ " "+variance(data));
   
       
    }
   
    public static void main(String[] args) {
        computeStatistics(1);
        computeStatistics(2);
        computeStatistics(3);
        computeStatistics(4);
        computeStatistics(5);
    }
   
}

count ist zuerst 0, dann 5 und es bleibt 5 immer.Ich verstehe nicht wie es von 0 auf 5 steigen kann, da cnt++ count = count + 1; bedeutet.
 
A

arhzz

Bekanntes Mitglied
Ok I hab jetzt gesehen das sum und cnt falsch berechnet sind.Ich hab das mit sum erledigt aber cnt ist immer noch falsch bei mir

Java:
public class Statistics {
    static int data[] = new int[5];
    static int cnt;
   
    public static double sum (int[] arr) {
        double sum = 0.0;
        cnt = 0;
        for(int i = 0; i <arr.length; i++) {
            sum += arr[i];
            cnt++;
        }
        return sum;
    }
  
    public static double mean (int[] arr) {
        return sum(arr)/cnt;
    }
  
    public static double variance (int[] arr) {
        double mean = mean(arr);
        double sum = sum(arr);
        double variance = 0.0;
        for(int i = 0; i < arr.length; i++) {
            variance += Math.pow(data[i] - mean,2);
        }
        return Math.sqrt(variance/cnt);
    }
  
     public static void shiftArray(int[] arr){
        int[] newArr = new int[arr.length];
     
        for(int i = 1; i<newArr.length; i++){
            newArr[i]=arr[i-1];
        }
      
        data = newArr;
    }
  
    static void computeStatistics(int value) {
        shiftArray(data);
        data[0] = value;
        Out.println("Value" + " " + value);
        Out.println("Count" +" "+ cnt);
        Out.println("Mean" +" " + mean(data));
        Out.println("Deviation"+ " "+variance(data));
  
      
    }
  
    public static void main(String[] args) {
        computeStatistics(1);
        computeStatistics(2);
        computeStatistics(3);
        computeStatistics(4);
        computeStatistics(5);
    }
  
}

count ist zuerst 0, dann 5 und es bleibt 5 immer.Ich verstehe nicht wie es von 0 auf 5 steigen kann, da cnt++ count = count + 1; bedeutet.
Also jetzt ne antwort zu meiner Frage man muss eine uberprufung in der methode sum und deviation.


Java:
public class Statistics {
    static int data[] = new int[5];
    static int cnt;
    
    public static double sum (int[] array) {
        double sum = 0.0;
        cnt = 0;
        for(int i = 0; i <array.length; i++) {
            if(array[i] != 0) {
            sum += array[i];
            cnt++;
            }
        }
        return sum;
    }
   
    public static double mean (int[] array) {
        double mean = 0.0;
        mean = sum(array)/cnt;
        return mean;
    }
   
    public static double deviation (int[] array) {
        double mean = mean(array);
        double sum = sum(array);
        double deviation = 0.0;
        for(int i = 0; i < array.length; i++) {
            if(data[i] !=0) {
            deviation += Math.pow(data[i] - mean,2);
            }
        }
        return Math.sqrt(deviation/cnt);
    }
   
     public static void moveArray(int[] array){
        int[] newArray = new int[array.length];
      
        for(int i = 1; i<newArray.length; i++){
            newArray[i]=array[i-1];
        }
       
        data = newArray;
    }
   
    static void computeStatistics(int value) {
        moveArray(data);
        data[0] = value;
        Out.println("Value" + " " + value);
        Out.println("Mean" +" " + mean(data));
        Out.println("Deviation"+ " "+ deviation(data));
   
       
    }
   
    public static void main(String[] args) {
        while(In.done()) {
        Out.print("Please input a value:");
        int value = In.readInt();
        Out.println();
        computeStatistics(value);
        Out.println();
    }
    }
        
    }
 
mrBrown

mrBrown

Super-Moderator
Mitarbeiter
Teste mal mit:
Java:
computeStatistics(2);
computeStatistics(0);
computeStatistics(2);
computeStatistics(0);
computeStatistics(2);
 
F

fhoffmann

Top Contributor
Du solltest dir genau überlegen, was wann passiert.
Du hast diverse "static"-Variablen (die am Anfang mit 0 initialisiert sind).
Du hast genauso bezeichnete "static"-Methoden (die diese Variablen lesen und schreiben).
Diese Methoden haben Rückgabewerte, die nie benutzt werden.

Da ist leider ganz viel schief ...
 
N

Neumi5694

Bekanntes Mitglied
Warum count von 0 auf 5 wechselt ... Du lässt es ja erst ganz am Schluss ausgeben und nicht innerhalb der Schleife, wo es verändert wird.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Standardabweichung Java Basics - Anfänger-Themen 2
K nextGaussian und Standardabweichung Java Basics - Anfänger-Themen 2
A Median, Standardabweichung Java Basics - Anfänger-Themen 5
S Java TelephoneBookEntry search Java Basics - Anfänger-Themen 2
S Algorithmus java searchAll IKey Java Basics - Anfänger-Themen 4
Der Grütz Verständnisfrage zu Übung aus Java Kurs - Schaltjahr bestimmen Java Basics - Anfänger-Themen 2
F Frage betreff Programm mit dem man C++-Code in JAVA-Code übersetzen lassen kann Java Basics - Anfänger-Themen 2
L Brüche in java Java Basics - Anfänger-Themen 7
L Java operator % Java Basics - Anfänger-Themen 3
rafi072001 Integer Anomalie Java Java Basics - Anfänger-Themen 7
H Java file nicht gefunden Java Basics - Anfänger-Themen 5
M Packages erstellen mit Java-Editor Java Basics - Anfänger-Themen 6
mr.kottig Großeltern herausfinden Java - Map? Java Basics - Anfänger-Themen 16
L Java erstellt leere Datei Java Basics - Anfänger-Themen 8
D Java Übungsaufgaben Java Basics - Anfänger-Themen 6
H Java fx Java Basics - Anfänger-Themen 3
J JAVA-Problem blockiert MEDIATHEKVIEW Java Basics - Anfänger-Themen 13
M Java Anfang Java Basics - Anfänger-Themen 13
D Java Thread wartet nur ein mal Java Basics - Anfänger-Themen 1
D Java Thread wartet nur ein mal Java Basics - Anfänger-Themen 0
I Java auf der Konsole Java Basics - Anfänger-Themen 5
T Die neuste Java jee Java Basics - Anfänger-Themen 12
Spandeli8 Erzeugte Objekte gegenüber Bildern hervorheben in Java Processing Java Basics - Anfänger-Themen 1
G Java Hilfe Java Basics - Anfänger-Themen 3
johnboyne Java Zeichen Trennen Java Basics - Anfänger-Themen 1
I Java Quicksort PAP Java Basics - Anfänger-Themen 2
K Buchstabenzähler Java (Anfänger) Java Basics - Anfänger-Themen 35
J Java List, Bitte um Hilfe Java Basics - Anfänger-Themen 15
J Java List, bitte um Hilfe Java Basics - Anfänger-Themen 3
E Kleines Java-Projekt für Anfänger Java Basics - Anfänger-Themen 10
A Schleifen in Java Java Basics - Anfänger-Themen 4
Alan6 Java Editor BMI Rechner Java Basics - Anfänger-Themen 7
C java.sql Statement kann nicht geschlossen werden Java Basics - Anfänger-Themen 9
A Java die richtige Programmiersprache für mein Projekt? Java Basics - Anfänger-Themen 1
P myClass?.method() in Java Java Basics - Anfänger-Themen 4
I Java String einlesen und auslesen Java Basics - Anfänger-Themen 11
Marc111111111 Selection Sort in Java?? Java Basics - Anfänger-Themen 6
NicoDeluxe Java RAM Management Java Basics - Anfänger-Themen 26
N Groß- und Kleinschreibung bei Java: void Methode Java Basics - Anfänger-Themen 1
T SelectionSort Java Java Basics - Anfänger-Themen 1
TimoN11 Frage zu Java-Vererbung (Cast) Java Basics - Anfänger-Themen 5
T Java Fx Java Basics - Anfänger-Themen 4
J Alle .java Dateien von einem Verzeichnis in eine Zip speichern Java Basics - Anfänger-Themen 2
O Exception in thread "main" java.lang.ArithmeticException: / by zero Java Basics - Anfänger-Themen 4
G Java Rabatt berechnen Java Basics - Anfänger-Themen 8
MPFeuer JAVA Expert-PDF Java Basics - Anfänger-Themen 1
M Java-Applet zur Mittelwertberechnung Java Basics - Anfänger-Themen 3
Abraham42 Berechnung der Kühlung Java Java Basics - Anfänger-Themen 12
J Java Queue mit default Werten erstellen Java Basics - Anfänger-Themen 4
F Erste Schritte java.util.Scanner: Beliebig langen Text per Paste in Console eingeben ? Java Basics - Anfänger-Themen 14
S Allgemeine Java Codes lesen und verstehen Java Basics - Anfänger-Themen 7
TimoN11 Mail Programm mit Java? Java Basics - Anfänger-Themen 1
TimoN11 Java spezielle Suchprobleme - Aufgabe Java Basics - Anfänger-Themen 5
I Java-Wort einlesen und ausgeben Java Basics - Anfänger-Themen 7
H Brauche Hilfe in Java Eclipse Programmieraufgabe Neuling Java Basics - Anfänger-Themen 3
JaVaN0oB java.lang.ArrayIndexOutOfBoundsException Java Basics - Anfänger-Themen 17
Abraham42 Sparguthaben JAVA Java Basics - Anfänger-Themen 4
TimoN11 Java Klassen Global einbinden Java Basics - Anfänger-Themen 1
H Binominalkoeffizient tail-rekursiv in java darstellen Java Basics - Anfänger-Themen 0
H Audio in Java Java Basics - Anfänger-Themen 3
I Erklärung zum Java Code Java Basics - Anfänger-Themen 2
AlexVo String zu Java Anweisung getString("*** java code ***") Java Basics - Anfänger-Themen 19
R Java (Eclipse) "Lagerverwaltung" HILFE Java Basics - Anfänger-Themen 13
TimoN11 Java - Eine oder mehrere Eingaben möglich machen Java Basics - Anfänger-Themen 6
M Rekursive Java-Methode Java Basics - Anfänger-Themen 13
M Java Spiel wie Wer wird Millionär Java Basics - Anfänger-Themen 1
bafou Dreieckszahlen in java Java Basics - Anfänger-Themen 3
P Best Practice Druck aus Java Anwendung in MacOs Java Basics - Anfänger-Themen 0
G Java 2-dimensionalen int-Array Summe Java Basics - Anfänger-Themen 2
B java.time Duration mit Kommazahl? Java Basics - Anfänger-Themen 4
Devin Wo kann man einen Java Lehrplan finden? Java Basics - Anfänger-Themen 5
KogoroMori21 Java Datum Differenz (kleiner Fehler) Java Basics - Anfänger-Themen 10
O Java Weinachtsbaum in einem Bilderramen Java Basics - Anfänger-Themen 5
F Java Programm, das kleine Buchstaben in einem String zählen soll und bei großen Buchstaben oder Sonderzeichen abbrechen soll. Java Basics - Anfänger-Themen 5
Gaudimagspam Dringend Java Hilfe benötigt Java Basics - Anfänger-Themen 19
M Java Kompilieren über Package grenzen hinaus Java Basics - Anfänger-Themen 4
N java.util.InputMismatchException Fehler Java Scanner Java Basics - Anfänger-Themen 1
Gaudimagspam BMI in Java implementieren Java Basics - Anfänger-Themen 38
C Was ist nötig für ein Java-Programm auf Server für Website Java Basics - Anfänger-Themen 18
F Fehlermeldung java.lang.NullPointerException Java Basics - Anfänger-Themen 4
S Sprung mit Java (GameGrid) Java Basics - Anfänger-Themen 9
Devin Wie lange braucht man um Java zu beherrschen und wie kann man es am schnellsten erlernen? Java Basics - Anfänger-Themen 7
G Java Klassen und Instanzmethoden Java Basics - Anfänger-Themen 15
Zrebna Frage zum "Referenzen-konzept" in Java Java Basics - Anfänger-Themen 8
C java.util Timer läuft zu langsam? Java Basics - Anfänger-Themen 1
T Klassendiagramm in Java überführen Java Basics - Anfänger-Themen 2
Gaudimagspam Caesars Code entziffern in Java Java Basics - Anfänger-Themen 8
V Gehalt berechnen in Java Java Basics - Anfänger-Themen 6
java3690 Java- liste füllen ud die werte addieren Java Basics - Anfänger-Themen 13
justemii Gehalt berechnen - Aufgabe Java-Programm Java Basics - Anfänger-Themen 9
P Mit iPad Java lernen Java Basics - Anfänger-Themen 15
W Java in Exe Datei umgewandelt, Ressourcen fehlen (Bilder und Audiodateien) Java Basics - Anfänger-Themen 1
N Best Practice How can I creat a programm with java under windows 10 in order to open an spreadsheet in libreoffice calc format Java Basics - Anfänger-Themen 11
T Start-Activity für Java Maven Web-Anwendung festlegen Java Basics - Anfänger-Themen 2
J Java FX - Label aktualisieren Java Basics - Anfänger-Themen 1
A Hilfe bei Java Projekt Java Basics - Anfänger-Themen 4
G Java Bruchrechner Addition, Multiplikation... Java Basics - Anfänger-Themen 12
M Java Einstellung von Apache POI für MS Word Erstellung mit Eclipse Java Basics - Anfänger-Themen 6
B Exception in thread "AWT-EventQueue-0" java.util.ConcurrentModificationException Java Basics - Anfänger-Themen 8
T Java Swing - Dreieck zeichnen mit verschiedenen Variablen Java Basics - Anfänger-Themen 8

Ähnliche Java Themen

Anzeige

Neue Themen


Oben