我需要在平面文件读取循环中跟踪过去 7 天的工作时间。它被用来衡量工作名册的“疲劳度”。
现在我有一些有用的东西,但它似乎相当冗长,我不确定是否有更简洁的模式。
目前,我有一个带有静态数组的 Java 类来保存最后 x 天的数据,然后当我阅读文件时,我砍掉第一个元素并将其他 6 个(一周滚动总计)向后移动一个。这个静态数组的处理是在它自己的方法中完成的,即。
/**
* 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;
}
我的问题:这是一种合理的设计方法,还是有一些非常明显和简单的方法来完成这项任务?多谢你们