package org.fluxoid.utils;
public class RunningAverager implements Averager {
private FixedSizeFifo<Double> values;
private Double lastValue;
public RunningAverager(int samplesToAverage) {
values = new FixedSizeFifo<Double>(samplesToAverage);
}
/* (non-Javadoc)
* @see org.cowboycoders.location.Averager#add(double)
*/
@Override
public void add(double y) {
lastValue = y;
values.offer(y);
}
/* (non-Javadoc)
* @see org.cowboycoders.location.Averager#getLastValue()
*/
@Override
public Double getLastValue() throws NullPointerException {
return lastValue;
}
/* (non-Javadoc)
* @see org.cowboycoders.location.Averager#getAverage()
*/
@Override
public double getAverage() {
double total = 0;
for (double value : values) {
total += value;
}
return total / values.size();
}
public static void main(String[] args) {
RunningAverager a = new RunningAverager(10);
a.add(4);
a.add(6);
a.add(4);
a.add(6);
a.add(4);
a.add(6);
a.add(4);
a.add(6);
System.out.println(a.getAverage());
}
@Override
public int getNumberOfSamples() {
return values.size();
}
}