/* 
  An object of class StatCalc can be used to compute several simple statistics
  for a set of numbers.  Numbers are entered into the dataset using
  the enter(double) method.  Methods are provided to return the following
  statistics for the set of numbers that have been entered: The number
  of items, the sum of the items, the average, the standard deviation,
  the maximum, and the minimum.
*/
     
 public class StatCalc {
 
  private int count;   // Number of numbers that have been entered.
  private double sum;  // The sum of all the items that have been entered.
  private double squareSum;  // The sum of the squares of all the items.
  private double max = Double.NEGATIVE_INFINITY;  // Largest item seen.
  private double min = Double.POSITIVE_INFINITY;  // Smallest item seen.
 
  public void enter(double num) {
        // Add the number to the dataset.
     count++;
     sum += num;
     squareSum += num*num;
     if (num > max)
        max = num;
     if (num < min)
        min = num;
  }
 
  public int getCount() {   
        // Return number of items that have been entered.
     return count;
  }
 
  public double getSum() {
        // Return the sum of all the items that have been entered.
     return sum;
  }
 
  public double getMean() {
        // Return average of all the items that have been entered.
        // Value is Double.NaN if count == 0.
     return sum / count;  
  }
 
  public double getStandardDeviation() {  
       // Return standard deviation of all the items that have been entered.
       // Value will be Double.NaN if count == 0.
     double mean = getMean();
     return Math.sqrt( squareSum/count - mean*mean );
  }
  
  public double getMin() {
       // Return the smallest item that has been entered.
       // Value will be infinity if no items have been entered.
     return min;
  }
  
  public double getMax() {
       // Return the largest item that has been entered.
       // Value will be -infinity if no items have been entered.
     return max;
  }
 
 }  // end class StatCalc
