FileDocCategorySizeDatePackage
Averager.javaAPI DocExample2085Mon Sep 22 13:30:30 BST 1997None

Averager.java

// This example is from _Java Examples in a Nutshell_. (http://www.oreilly.com)
// Copyright (c) 1997 by David Flanagan
// This example is provided WITHOUT ANY WARRANTY either expressed or implied.
// You may study, use, modify, and distribute it for non-commercial purposes.
// For any commercial use, see http://www.davidflanagan.com/javaexamples

/**
 * A class to compute the running average of numbers passed to it
 **/
public class Averager {
  // Private fields to hold the current state.
  private int n = 0;
  private double sum = 0.0, sumOfSquares = 0.0;

  /** 
   * This method adds a new datum into the average.
   **/
  public void addDatum(double x) {
    n++;
    sum += x;
    sumOfSquares += x * x;
  }

  /** This method returns the average of all numbers passed to addDatum() */
  public double getAverage() { return sum / n; }

  /** This method returns the standard deviation of the data */
  public double getStandardDeviation() {
     return Math.sqrt(((sumOfSquares - sum*sum/n)/n));
  }

  /** This method returns the number of numbers passed to addDatum() */
  public double getNum() { return n; }

  /** This method returns the sum of all numbers passed to addDatum() */
  public double getSum() { return sum; }

  /** This method returns the sum of the squares of all numbers. */
  public double getSumOfSquares() { return sumOfSquares; }

  /** This method resets the Averager object to begin from scratch */
  public void reset() { n = 0; sum = 0.0; sumOfSquares = 0.0; }

  /** 
   * This nested class is a simple test program we can use to check that 
   * our code works okay.
   **/
  public static class Test {
    public static void main(String args[]) {
      Averager a = new Averager();
      for(int i = 1; i <= 100; i++) a.addDatum(i);
      System.out.println("Average: " + a.getAverage());
      System.out.println("Standard Deviation: " + a.getStandardDeviation());
      System.out.println("N: " + a.getNum());
      System.out.println("Sum: " + a.getSum());
      System.out.println("Sum of squares: " + a.getSumOfSquares());
    }
  }
}