Выделение отдельных цифр из числа в Java: решение

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый и простой способ

Для того чтобы извлечь отдельные цифры из числа типа int, можно использовать % 10, которое позволяет получить последнюю цифру. В то же время, чтобы отделить данную цифру от числа, применяется /= 10:

Java
Скопировать код
int number = 12345;
while (number > 0) {
    System.out.println(number % 10); // вывод последней цифры
    number /= 10;                    // устранение последней цифры
}

В таком случае цикл прекращается, когда значение переменной number становится равным нулю. Вывод происходит в обратном порядке.

Кинга Идем в IT: пошаговый план для смены профессии

Обратный порядок? У нас уже всё готово!

Если требуется сохранить следование цифр, к которым мы пришли в исходном числе, можно использовать класс ArrayList для временного хранения цифр:

Java
Скопировать код
int number = 12345;
ArrayList<Integer> digits = new ArrayList<>();
while (number > 0) {
    digits.add(number % 10);
    number /= 10;
}
Collections.reverse(digits);           // инвертируем список
digits.forEach(System.out::println);  // выводим каждую цифру

Работа со строками: почему бы и нет?

Альтернатива предыдущему подходу и заключается в преобразовании числа в строку (string), что сделает извлечение цифр более удобным:

Java
Скопировать код
String numberStr = String.valueOf(number);
for (char digit : numberStr.toCharArray()) {
    System.out.println(Character.digit(digit, 10)); // отображение численного значения цифры
}

Java 8 Stream: элегантно и компактно

С использованием Stream API Java 8+ задача решается более лаконично:

Java
Скопировать код
IntStream.of(numberStr.chars().map(c -> c – '0').toArray()).forEach(System.out::println);

Рекурсивный метод для любителей "Звёздных войн"

Рекурсия — это изящный метод достижения поставленной цели:

Java
Скопировать код
void printDigits(int num) {
    if (num / 10 > 0) {
        printDigits(num / 10); // спускаемся по разрядам
    }
    System.out.println(num % 10); // отображение цифры
}

На что стоит обратить внимание

При работе с разделением чисел следует учесть следующее:

  • Отрицательные числа: используйте Math.abs(number).
  • Переполнение и потеря точности: помните об ограничениях, связанных с работой с крупными числами.

Разбираем процесс на части

Извлечение цифр из целого числа можно сравнить с деконструкцией конструктора ЛЕГО®: каждый элемент является отдельной цифрой.

Взгляните на пример с числом 1253: 🧱 = Один элемент конструктора (одна цифра)

Разборка числа на компоненты:

  • Полное число: 🏢: [1, 2, 5, 3]
  • Отдельные элементы: 🧱 1, 🧱 2, 🧱 5, 🧱 3

Таким образом, каждый элемент представляет собой отдельную цифру исходного числа!

Продвинутое использование и настройки

Форматирование вывода: Для изящного представления данных используйте printf. Манипулирование цифрами: Примените различные операции к цифрам числа. Хранение цифр: Можно организовать хранение цифр для дальнейшего использования в массиве или списке.