Чтобы сохранить промежуточное среднее значение, вы не сохраняете действительное среднее значение, сохраняете промежуточное итоговое значение и количество выборок, а затем вычисляете среднее значение обычным способом, который составляет общее количество / выборок.Поэтому для этого набора вы должны хранить эти значения на каждом этапе.
Образцы: 96, 99, 100
Всего: 96, Образцы: 1 => AVG = 96/1 = 96
Всего: 195, Образцы: 2 => AVG = 195/2 = 97,5
Всего: 295, Образцы: 3 => AVG = 295/3 = 98,333
Неправильный способ, указанный в другом месте, состоит в том, чтобы всегда делить на два после первой выборки и просто добавлять предыдущее среднее к новой выборке.Это приведет к 99 выборкам из 100, а выборка из 0 будет иметь в среднем 50, что, очевидно, неверно.
Я бы изменил ваш код на что-то вроде
int numberOfCaptures = prefs.getInt(CaptureActivity.NUMBER_OF_CAPTURES, 0);
numberOfCaptures++;
int runningTotal = prefs.getInt(CaptureActivity.RUNNING_TOTAL, 0);
runningTotal += result.getBlastScore();
//Calculate the average of all of the captures
int averageBlastScore = runningTotal / numberOfCaptures;
System.out.println("Blast Score: " + result.getBlastScore());
System.out.println("Number of Captures: " + numberOfCaptures);
System.out.println("Average Blast Score: " + averageBlastScore);
//Save it, so we can get it again if the user captures another swing
prefs.edit().putInt(CaptureActivity.RUNNING_TOTAL, runningTotal).commit();
prefs.edit().putInt(CaptureActivity.NUMBER_OF_CAPTURES, numberOfCaptures).commit();
Есливы настаиваете на сохранении скользящего среднего вместо промежуточного, вам нужно будет умножить это среднее на выборки ДО приращения выборок, чтобы получить предыдущий итог, а затем перейти оттуда.