Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I get a moving average?

Tags:

java

I want to get a 5 day moving average from an array of numbers like so.

Array of numbers: 11,12,13,14,15,16,17

First day of 5-day moving average: (11 + 12 + 13 + 14 + 15) / 5 = 13

Second day of 5-day moving average: (12 + 13 + 14 + 15 + 16) / 5 = 14

Third day of 5-day moving average: (13 + 14 + 15 + 16 + 17) / 5 = 15

int[] arry = {11,12,13,14,15,16,17};
int sum = 0;
    
for(int j = 0; j < 5; j++) {
    sum += arry[j];
    System.out.println(sum);
}
    
System.out.println();
int average = sum / 5;
System.out.println("Sum: " + sum);
System.out.println("Average: " + average);

Am able to get the first average but am lost on how to implement a loop to get the next set of averages?

like image 623
user3131148 Avatar asked Apr 28 '26 03:04

user3131148


1 Answers

Please see the following tested code (method from @ajb is more elegant, but I use the idea from @zapl for simplicity):

public static void main(String[] args) {
    int[] arry = { 11, 12, 13, 14, 15, 16, 17 };
    int size = 5;

    for (int i = 0; i + size <= arry.length ; i++)

        int sum = 0;
        for (int j = i; j < i + size; j++) {
            sum += arry[j];
            System.out.println(sum);
        }

        System.out.println();
        int average = sum / 5;
        System.out.println("Sum: " + sum);
        System.out.println("Average: " + average);
    }
}
like image 180
Tsung-Ting Kuo Avatar answered Apr 30 '26 17:04

Tsung-Ting Kuo