Я пробовал написать этот код, чтобы проверить свою идею о том, как рассчитать среднее значение по таким же индексам хэш-карты.
т. Е. Для каждого массива, содержащегося внутри хэш-карты, если первое значение для первого массива было 2
, а первое значение для второго массива было 4
, а первое значение для третьего массива было 3
, я хочу присвоить значение (4 + 3 + 2/3) = 3
в последний двойной массив [] для первого индекса и т. Д. Для всех индексов от 2 до n.вычислить среднее значение через знаки хэш-карты
int Size = 3;
double[] AVERAGED_WEIGHTS = new double[Size];
//store weights to be averaged.
Map<Integer,double[]> cached_weights = new HashMap<Integer,double[]>();
double[] weights = new double[Size];
int iteration = 0;
do
{
weights[iteration] = Math.floor(Math.random() * 10000)/10000;
iteration++;
//store weights for averaging
cached_weights.put(iteration , weights);
}
while (iteration < Size);
//calc averages
for (Entry<Integer, double[]> entry : cached_weights.entrySet())
{
int key = entry.getKey();
double[] value = entry.getValue();
AVERAGED_WEIGHTS[ key - 1 ] += value[ key - 1 ];
if (key == iteration)
{
AVERAGED_WEIGHTS[ key - 1 ] /= key;
}
}
for(int i = 0; i < weights.length; i++)
{
weights[i] = AVERAGED_WEIGHTS[i];
}
Это напоминает структуру исходной программы, в которой веса заполняются через цикл while. Этот код не работает и не выполняет операцию, описанную выше. Я искал в Интернете и пытался по-разному исправить это, но я не смог его решить. Возможно, кто-то может обнаружить мою ошибочную логику.
Ваш код имеет так много недостатков. 'AVERAGED_WEIGHTS [ключ-1] + = значение [ключ-1]; ', а также в условии, что вы находитесь с ключом, но не сохраняете нигде. и почему вы использовали последний цикл? – Prashant
dig [this one] (http://stackoverflow.com/questions/28688007/take-the-average-of-each-index-in-a-double-hash-map-and-assign-it-to-an -output) это более полное описание того, что я пытаюсь сделать –
@Prashant согласны ли вы с тем, что ответ Даниила правильный? –