Questa è la traccia:
Esercizio P6.7. Media e deviazione standard. Scrivete un programma che legga un insieme di dati
in virgola mobile. Al termine, stampate il conteggio dei valori, la media e la deviazione standard.
La media di un insieme di valori x1, ..., xn è data da

m = Σxi/n

dove Σxi = x1 + ... + xn è la somma dei valori di ingresso. La deviazione standard è espressa da
questa formula

s = sqrt{(Σ(xi-m)^2)/(n-1)}


che, però, non è adatta per la nostra attività, perché, nel momento in cui calcolate la deviazione
standard, i singoli valori xi se ne sono andati da un pezzo. Finché non sapete come memorizzare
questi valori, utilizzate questa formula, anche se è numericamente meno stabile:

s = sqrt{((Σ(xi)^2) -1/n * (Σxi)^2)/(n-1)}

Potete calcolare quest’ultimo valore tenendo traccia, nella classe DataSet, del conteggio dei valori
in ingresso, della loro somma e della somma dei loro quadrati, mano a mano che li ricevete.

Ecco il codice che ho scritto però è sbagliato

codice:
public class DataSet {
	
	private double sommaValori;
	private double sommaQuadrati;
	private int numValori;
	private double media;
	private double deviazioneStandard;
	
	public DataSet(){
		this.numValori = 0;
		this.media = 0;
		this.deviazioneStandard = 0;
	}
	
	public void setAddValue(double valoreDecimale){
		numValori++;
		this.sommaValori = sommaValori + valoreDecimale;
		this.media = sommaValori/numValori;
		this.sommaQuadrati = Math.pow(sommaValori, 2) + Math.pow(valoreDecimale, 2);
		this.deviazioneStandard = Math.sqrt(((sommaQuadrati)-(1/numValori)*(Math.pow(sommaValori, 2)))/(numValori -1));
	}	
	
	public int getNumValori(){
		return numValori;
	}
		
	public double getMedia(){
		return media;
	}
	
	public double getDeviazioneStandard(){
		return deviazioneStandard;
	}

}

import java.util.Scanner;

public class DataSetTester {
	
	public static void main(String[] args) {
		
		Scanner in = new Scanner(System.in);
		
		DataSet ds = new DataSet();
		
		boolean done = false;
		while(!done){
			
			System.out.println("Inserisci valore decimale oppure -1 per terminare: ");
			ds.setAddValue(in.nextDouble());
			
			if(in.nextDouble() == -1)
				done = true;
		}
		
		System.out.println("Numero di valori inseriti : "+ds.getNumValori());
		System.out.println("Media dei valori inseriti : "+ds.getMedia());
		System.out.println("Deviazione standard dei valori inseriti : "+ds.getDeviazioneStandard());

	}



}