#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 ListDigitsInNumber(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<
Комментариев нет:
Отправить комментарий