Привет, У меня проблема с моими кодами по Модальному значению. Вот мой код:Среднее, медианное и режимное
public class basicStatistics {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int[] arr = new int[n];
int[] arrCount = new int[n];
int maxCount = 0;
double median = 0.0, mean = 0.0;
for(int i = 0; i < n; i++) {
arr[i] = in.nextInt();
mean = mean + arr[i];
}
mean = mean/n;
for(int i = 0; i < n; i++) {
for(int j = 0; j < n; j++){
if(arr[i] == arr[j]){
arrCount[i]++;
}
if(maxCount < arrCount[i])
maxCount = i;
}
}
Arrays.sort(arr);
if(n%2 == 0) {
median = arr[n/2] + arr[n/2-1];
median = median/2;
} else {
median = arr[n/2];
}
System.out.printf("%.1f\n", mean);
System.out.printf("%.1f\n", median);
System.out.println(arr[maxCount]);
}
}
Вопрос в том, что я не могу получить значение права Modal, когда вход это: http://pastebin.com/HCqTrimY я использовал Pastebin как это входы 2500 номеров. Мой код выводит значение массива 259 вместо 2184 для режима, однако, если вход равен n = 10, а числа = 64630 11735 14216 99233 14470 4978 73429 38120 51135 67060 Я получаю значение режима правильно или для другого сценария.
Я также хотел преобразовать код в более эффективный, используя структуру Java8. Заранее благодарю!
Вы действительно хотите проверить 'if (arr [i] == arr [j])' if 'i == j'? –
hmm .. Я думал о том, что я удалил его во второй ревизии. Как я могу его устранить? что я раньше был добавлен if if (i! = j) {...} выше if (arr [i] == arr [j]) {...} – Cham