Ну, я программирую арифметический калькулятор с помощью Java, и я попытался реализовать функцию, которая вычисляет режим. Проблема в том, что по какой-то причине она работает неправильно. Вот функция:Статистический режим (калькулятор Java)
public static String moda(Double[] valores){
Double resultado = null;
Integer contador = 0;
Integer contadorFinal = 0;
for(int i = 0; i < valores.length; i++){
contador = 0;
for(int j = 0; j < valores.length; j++){
if(valores[i] == valores[j]) contador++;
}
if(contador > contadorFinal){
resultado = valores[i];
contadorFinal = contador;
}
}
return "La moda es " + resultado + " que se repite un total de " + contadorFinal + " veces.";
}
По какой-то причине, он всегда возвращался мне первое значение массива (например, если Double [] Valores содержит (4,7,7,8,8,8) он будет верните мне 4); и режим всегда равен 1.
Я искал код снова и снова, и для меня это выглядит хорошо. Не могли бы вы мне помочь?
Ну, у вас есть только одна переменная «count». Как в вашем примере (4,7,7,8,8,8) он мог знать, что 7 произошло два раза, а 8 - три? Вам нужна одна переменная count за значение в массиве. – markspace
@markspace благодарим вас за ответ! «contadorFinal» - это второй счетчик. – xFunkyTImes
Да, извините. Но сначала я не мог понять, что вы делаете. Ваш алгоритм не будет хорошо сфокусироваться на больших наборах данных, вы можете посмотреть, как это сделать в одном цикле (что и предполагал мой комментарий). – markspace