# Program To Find Simple Moving Average In Java And C#

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
{
sum += 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) {
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
{
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) {
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`````` 