public static void getMode(int number){
int[] countArray = new int[10];
while(number > 0){
//We take a single number from the number using modulo
int n = number%10;
countArray[n]++;
//We remove the number we already used.
number= number/10;
}
//Count cannot possibly be less than -1
int max = -1;
for(int i = 0; i< 10; i++){
//Checking which number occurs the most and updates max
if(countArray[i] > max)
max = countArray[i];
}
System.out.println("Number " + getNumber(countArray, max) + " appears " + max + " times");
}
//Helping method I made in order to get which number was found the most
public static int getNumber(int [] array, int max){
//Simply the array element which contained max is the element
//that occured the most.
for(int i = 0; i < array.length; i++){
if(array[i] == max)
return i;
}
return -1;
}
При подсчете чисел массив из 0-9 помогает много, потому что он охватывает диапазон всех возможных номеров. Поэтому позвольте мне провести вас через мой код. Пользователь вводит число, предположим, что он равен 123455.
Вы вводите цикл while, и это число действительно больше 0. Используя% от числа, вы получите 5. countArray [5] ++ означает, что countArray в позиции 5 увеличивается на 1. Затем число должно быть разделено на 10, чтобы избавиться от числа, которое вы уже использовали, и оно обновляется.
Теперь ваш countArray выглядит так: {0, 0, 0, 0, 0, 1, 0, 0, 0, 0}. Теперь ваш номер 12345, который еще больше 0, вы входите в цикл. Использование% снова дает вам 5. countArray [5], который теперь равен 1, увеличивается на 1 раз.
Ваш countArray выглядит как {0, 0, 0, 0, 0, 2, 0, 0, 0, 0}. Теперь ваш номер 1234, который еще больше 0, вы возвращаетесь в цикл. Использование% дает вам 4. countArray [4] увеличивается. Ваш countArray выглядит как {0, 0, 0, 0, 1, 2, 0, 0, 0, 0}. Итак, так далее и так далее, пока не будет больше чисел, чтобы подсчитать, что в этом случае массив будет выглядеть как {0, 1, 1, 1, 1, 2, 0, 0, 0, 0}.
Следующий цикл - это поиск того, что было найдено максимальное количество. Это просто, петли над массивом, и если он найдет число больше max, max станет этим числом. В этом случае макс в конечном итоге станет 2.
Хотя мы нашли, сколько раз подсчитывалось самое подсчитанное число, мы все еще не знаем, что это число, т.е. в моем примере, мы знаем, что самое подсчитанное число считалось 2 но мы до сих пор не знаем, что это 5. Следовательно, метод помощника, который я создал, находит, какой номер был подсчитан больше всего. Он перемещается по массиву, если массив в некоторой позиции содержит максимальное количество отсчетов, то это должно быть число.
Что такое «режим номера»? –
Знаешь, средний, медианный, режим? В принципе, какое число появляется больше всего времени – TobiasS
Это не медианное. «В статистике и теории вероятностей медиана представляет собой число, отделяющее более высокую половину выборки данных, популяции или распределения вероятности от нижней половины». Какой у Вас вопрос? –