Что делает new int [10];
Создает новый массив размером 10, который может содержать int
значений.Все значения в массиве будут инициализированы равными 0 (именно так Java обрабатывает int
примитивы).
В этом случае, похоже, что этот массив используется для хранения количества раз, когда цифра, соответствующая его индексу, была замечена.
Хмм, что сбивало с толку, ивероятно, еще более запутанно читать, поэтому позвольте мне привести пример.Для ввода 992121
можно ожидать, что массив repeatedDigits
будет выглядеть следующим образом, когда программа будет завершена:
[0, 2, 1, 0, 0, 0, 0, 0, 0, 2]
, т.е. два 1, один 2 и два 9 *
while (x > 0) {
Это запускает цикл, который будет продолжаться до тех пор, пока x
не станет равным (или меньшим, чем, но этого не должно быть) нулю.
int remainder = x % 10;
Это по существу«захватывает» крайнюю правую цифру числа, используя модульную арифметику.Он делит число на 10, и любой остаток будет тем, что находится в «месте» (то есть самой правой цифре).
x = x / 10;
Это сдвигает цифры вправо на единицуи выбрасывает крайнюю правую цифру (поскольку вы уже ее захватили).
repeatedDigits[remainder] = repeatedDigits[remainder] + 1
Это просто увеличивает значение в массиве в соответствующем месте.Например, если вы только что нажали 9 с правого конца числа, это увеличит значение в repeatDigits [9], чтобы вы знали, что только что увидели дополнительные 9.
int index = 0;
while (index < 10) {
Мы собираемся сделать цикл!Есть (на мой взгляд) лучшие способы сделать это, но это работает так же хорошо.По сути, вы хотите, чтобы index
начинался с 0 и проходил весь цикл до 9, но останавливался при достижении 10.
if (repeatedDigits[index] != 0)
Если значение в данном месте вrepeatedDigits
массив не равен нулю, тогда ...
System.out.println("The digit " + index + " occurs " + repeatedDigits[index]);
... распечатать его!
index++;
И, наконец, приращение index
так что мы можем проверить следующий номер.Это точно так же, как index = index + 1
.