Выделение отдельных цифр из числа в Java: решение
Быстрый и простой способ
Для того чтобы извлечь отдельные цифры из числа типа int, можно использовать % 10
, которое позволяет получить последнюю цифру. В то же время, чтобы отделить данную цифру от числа, применяется /= 10
:
int number = 12345;
while (number > 0) {
System.out.println(number % 10); // вывод последней цифры
number /= 10; // устранение последней цифры
}
В таком случае цикл прекращается, когда значение переменной number
становится равным нулю. Вывод происходит в обратном порядке.
Обратный порядок? У нас уже всё готово!
Если требуется сохранить следование цифр, к которым мы пришли в исходном числе, можно использовать класс ArrayList для временного хранения цифр:
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), что сделает извлечение цифр более удобным:
String numberStr = String.valueOf(number);
for (char digit : numberStr.toCharArray()) {
System.out.println(Character.digit(digit, 10)); // отображение численного значения цифры
}
Java 8 Stream: элегантно и компактно
С использованием Stream API Java 8+ задача решается более лаконично:
IntStream.of(numberStr.chars().map(c -> c – '0').toArray()).forEach(System.out::println);
Рекурсивный метод для любителей "Звёздных войн"
Рекурсия — это изящный метод достижения поставленной цели:
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
.
Манипулирование цифрами: Примените различные операции к цифрам числа.
Хранение цифр: Можно организовать хранение цифр для дальнейшего использования в массиве или списке.