La moyenne mobile/total de l'algorithme

J'ai besoin de garder une trace des 7 derniers jours heures de travail en un fichier à plat de la lecture de la boucle. Il est utilisé pour mesurer "fatigueability" des équipes de travail.

Droit maintenant, j'ai quelque chose qui fonctionne, mais il semble assez bavard et je ne suis pas sûr qu'il y a un modèle qui est plus concis.

Actuellement, j'ai une classe Java avec un tableau statique de tenir les x derniers jours des données, puis comme je l'ai lu dans le fichier, j'ai couper le premier élément et déplacez les 6 autres (pour une semaine de roulement total) en arrière par un. Le traitement de ce tableau statique est fait dans sa propre méthode ie.

/**
 * Generic rolling average/total method. Keeps adding to an array of 
 * last 'x' seen.
 * @param d Datum point you want to add/track.
 * @param i Number of rolling periods to keep track of eg. 7 = last 7 days
 *          NOT USED AT MOMENT DURING TESTING
 * @param initFlag A flag to initialize static data set back to empty.
 * @return The rolling total for i periods.
 */
private double rollingTotal(double d, boolean initFlag) {
    //Initialize running total array eg. for new Employyes
    if (initFlag) {
        runningTotal = null;
    }
    else {
        //move d+1 back to d eg. element 6 becomes element 5
        for (int x = 0; x< 6 ; x++) {
            runningTotal[x] = runningTotal[x+1];
        }
        //Put current datum point at end of array.
        runningTotal[6]= d;
    }
    //Always return sum of array when this method is called.
    double myTotal = 0.0;
    for (int x = 0; x<7; x++) {
        myTotal+= runningTotal[x];
    }
    System.err.print(Arrays.toString(runningTotal)+ '\n' );
    return myTotal;
}

Ma question: est-ce raisonnable approche de la conception, ou est-il quelque chose évidentes et simples à réaliser cette tâche?
Merci les gars

Les bonnes réponses claires ci-dessous: il y a quelques "moyenne mobile" du type de questions dans StackOverflow, espérons que les gens vont trouver cette question (et sa réponse) à une commune, générique genre de problème de programmation.

OriginalL'auteur Pete855217 | 2011-08-30