Страницы

Поиск по вопросам

пятница, 7 декабря 2018 г.

Разбиение числа на цифры независимо от длины

Изучаю java и для практики решаю простенькие логические задачки, типа нахождения счастливого билетика. Часто встречаются задания, где на входе есть n-значное число, и необходимо что-то сделать с цифрами, из которого оно состоит (дан диапазон чисел от 1 до 999, найти, в скольких числах из диапазона встречается цифра 2). Все, что я знаю и умею - это разбивать ни цифры делением:
int a = 123 / 100 = 1 int b = 123 / 10 % 10 = 2 int c = 123 % 100
Остальная часть задачи проверяется условием. Собственно сам вопрос: есть ли в java какой либо метод, позволяющий разбивать число на цифры и не привязываться к его длине? Например, числа, в которых необходимо искать 2 и ммм 13! вводятся с клавиатуры? И длина числа ограничена только типом int.


Ответ

Что-то вы сильно мучаетесь с делением. Берите с конца. Взятие остатка от деления "%" числа на 10, всегда вам даст последнее из его цифр. И в цикл! int a = Integer.MAX_VALUE; StringBuilder s = new StringBuilder(); System.out.println(a); while(a>0) { s.insert(0, a%10); a = a / 10; } System.out.println(s.toString()); Причем навскидку, написать данный алгоритм можно не одним способом, выбирайте, кому как нравится: StringBuilder s = new StringBuilder(); for(int a=Integer.MAX_VALUE; a>0; a/=10) s.insert(0, a%10); System.out.println(s); Так же вам, и только вам, решать записывать цифры подряд, а в конце переворачивать строку, либо сразу писать все в начало строки.

Комментариев нет:

Отправить комментарий