Program To Find Simple Moving Average In Java And C# see below approach. The average obtained from the data for some t period of time is known as a **simple moving average**. Its value fluctuates with changing data in a regular mean, but it also changes with the time interval in this sort of mean. We calculate the mean for a certain time interval t and then discard some prior data. We obtain a new mean this time, and the process continues. That’s why it’s called a moving average. This has a lot of potential in the financial sector.

**Examples:**

```
Input : { 1, 3, 5, 6, 8 }
Period = 3
Output :New number added is 1.0, SMA = 0.3333333333333333
New number added is 3.0, SMA = 1.3333333333333333
New number added is 5.0, SMA = 3.0
New number added is 6.0, SMA = 4.666666666666667
New number added is 8.0, SMA = 6.333333333333333
```

**Approach**:

The first element of the moving average is obtained by taking the average of the initial fixed subset of the number series, given a series of values and a fixed subset size. The subset is then “shifted forward,” i.e., the first number of the series is excluded and the next value is added to the subset.

**Here is a java program to calculate the Simple Moving Average.**

// Java program to calculate // Simple Moving Average import java.util.*; public class SimpleMovingAverage { // queue used to store list so that we get the average private final Queue<Double> Dataset = new LinkedList<Double>(); private final int period; private double sum; // constructor to initialize period public SimpleMovingAverage(int period) { this.period = period; } // function to add new data in the // list and update the sum so that // we get the new mean public void addData(double num) { sum += num; Dataset.add(num); // Updating size so that length // of data set should be equal // to period as a normal mean has if (Dataset.size() > period) { sum -= Dataset.remove(); } } // function to calculate mean public double getMean() { return sum / period; } public static void main(String[] args) { double[] input_data = { 1, 3, 5, 6, 8, 12, 18, 21, 22, 25 }; int per = 3; SimpleMovingAverage obj = new SimpleMovingAverage(per); for (double x : input_data) { obj.addData(x); System.out.println("New number added is " + x + ", SMA = " + obj.getMean()); } } }

// C# program to calculate // Simple Moving Average using System; using System.Collections.Generic; public class SimpleMovingAverage { // queue used to store list so that we get the average private Queue<Double> Dataset = new Queue<Double>(); private int period; private double sum; // constructor to initialize period public SimpleMovingAverage(int period) { this.period = period; } // function to add new data in the // list and update the sum so that // we get the new mean public void addData(double num) { sum += num; Dataset.Enqueue(num); // Updating size so that length // of data set should be equal // to period as a normal mean has if (Dataset.Count > period) { sum -= Dataset.Dequeue(); } } // function to calculate mean public double getMean() { return sum / period; } // Driver code public static void Main(String[] args) { double[] input_data = { 1, 3, 5, 6, 8, 12, 18, 21, 22, 25 }; int per = 3; SimpleMovingAverage obj = new SimpleMovingAverage(per); foreach (double x in input_data) { obj.addData(x); Console.WriteLine("New number added is " + x + ", SMA = " + obj.getMean()); } } } // This code contributed by Rajput-Ji

**Output:**

```
New number added is 1.0, SMA = 0.3333333333333333
New number added is 3.0, SMA = 1.3333333333333333
New number added is 5.0, SMA = 3.0
New number added is 6.0, SMA = 4.666666666666667
New number added is 8.0, SMA = 6.333333333333333
New number added is 12.0, SMA = 8.666666666666666
New number added is 18.0, SMA = 12.666666666666666
New number added is 21.0, SMA = 17.0
New number added is 22.0, SMA = 20.333333333333332
New number added is 25.0, SMA = 22.666666666666668
```