Страницы

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

суббота, 28 декабря 2019 г.

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

#java #алгоритм


Изучаю java и для практики решаю простенькие логические задачки, типа нахождения
счастливого билетика. Часто встречаются задания, где на входе есть n-значное число,
и необходимо что-то сделать с цифрами, из которого оно состоит (дан диапазон чисел
от 1 до 999, найти, в скольких числах из диапазона встречается цифра 2). Все, что я
знаю и умею - это разбивать ни цифры делением:

int a = 123 / 100 = 1
int b = 123 / 10 % 10 = 2
int c = 123 % 100


Остальная часть задачи проверяется условием. Собственно сам вопрос: есть ли в java
какой либо метод, позволяющий разбивать число на цифры и не привязываться к его длине?
Например, числа, в которых необходимо искать 2 и ммм 13! вводятся с клавиатуры? И длина
числа ограничена только типом int.
    


Ответы

Ответ 1



Что-то вы сильно мучаетесь с делением. Берите с конца. Взятие остатка от деления "%" числа на 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); Так же вам, и только вам, решать записывать цифры подряд, а в конце переворачивать строку, либо сразу писать все в начало строки.

Ответ 2



Мне кажется, можно совсем просто: int i = 13579; String s = ""+i; Pri.priln(s.length()+" цифр"+" последняя "+s.charAt(s.length()-1)); KISS принцип.

Ответ 3



Загоняет цифры в список. А дальше делайте, что душе угодно. public static List DigitsInNumber(int number) { String n = Integer.toString(number); char[] charArray = n.toCharArray(); List cia = new ArrayList(); for (int i = 0;i

Ответ 4



Предлагаю простой цикл. int number = sc.nextInt(); int number_create; if (number<0){ //делаем число положительным number *=-1; } for (;number>0;number /=10){ number_create = number%10; }

Ответ 5



Можно так, например. BufferedReader read = new BufferedReader(new InputStreamReader(System.in)); String userIn = read.readLine(); int length = userIn.length(); for (int i = 0; i < length; i++){ int x = Integer.parseInt(userIn.substring(i, (i + 1))); }

Ответ 6



while(number!=0){ cout<

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

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