Java 如何获得移动平均线?

Java 如何获得移动平均线?,java,Java,我想从这样一组数字中得到一个5天移动平均值 数字数组:11,12,13,14,15,16,17 五日移动平均线首日:(11+12+13+14+15)/5=13 五日移动平均线的第二天:(12+13+14+15+16)/5=14 五日移动平均线的第三天:(13+14+15+16+17)/5=15 int[]arry={11,12,13,14,15,16,17}; 整数和=0; 对于(int j=0;j

我想从这样一组数字中得到一个5天移动平均值

数字数组:11,12,13,14,15,16,17

五日移动平均线首日:(11+12+13+14+15)/5=13

五日移动平均线的第二天:(12+13+14+15+16)/5=14

五日移动平均线的第三天:(13+14+15+16+17)/5=15

int[]arry={11,12,13,14,15,16,17};
整数和=0;
对于(int j=0;j<5;j++){
sum+=arry[j];
系统输出打印项数(总和);
}
System.out.println();
int平均值=总和/5;
System.out.println(“总和:+Sum”);
System.out.println(“平均值:+平均值”);

我能够获得第一个平均值,但我不知道如何实现循环以获得下一组平均值?

请查看以下测试代码(来自@ajb的方法更优雅,但为了简单起见,我使用了@zapl的思想):

publicstaticvoidmain(字符串[]args){
int[]arry={11,12,13,14,15,16,17};
int size=5;

对于(int i=0;i+size公共类移动变量{

public static void main(String[] args) {
    double[] array = {1.2, 3.4, 4.5, 4.5, 4.5};

    double St = 0D;
    for(int i=0; i<array.length; i++) {
        St = movingAvarage(St, array[i]);
    }
    System.out.println(St);

}

private static double movingAvarage(double St, double Yt) {
    double alpha = 0.01, oneMinusAlpha = 0.99;
    if(St <= 0D) {
        St = Yt;
    } else {
        St = alpha*Yt + oneMinusAlpha*St;
    }
    return St;
}
publicstaticvoidmain(字符串[]args){
双[]数组={1.2,3.4,4.5,4.5,4.5};
双St=0D;

对于(inti=0;ihint:动态更改for循环的开始/停止条件,使其移动。我认为您应该自己解决这一问题,但这里有一个提示:在对前5个数字求和后,您可以通过取上一个和,减去一个数字,再加上一个数字来获得下一个和。找出您应该对哪个数字进行求和act.to make to make to more dynamic将top forloop更改为this
for(inti=0;i+5@saikumarm非常感谢!我还添加了一个变量
size
来替换常量5:-)我知道这只是一个例子。但是使用变量名(如St和Yt)的程序员需要转换职业。我不敢相信2019年这仍然是一个问题。请更改变量名,以便人们知道它们的用途(有意义的名称)。
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);
    }
}
public static void main(String[] args) {
    double[] array = {1.2, 3.4, 4.5, 4.5, 4.5};

    double St = 0D;
    for(int i=0; i<array.length; i++) {
        St = movingAvarage(St, array[i]);
    }
    System.out.println(St);

}

private static double movingAvarage(double St, double Yt) {
    double alpha = 0.01, oneMinusAlpha = 0.99;
    if(St <= 0D) {
        St = Yt;
    } else {
        St = alpha*Yt + oneMinusAlpha*St;
    }
    return St;
}