Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.58/64: Рейтинг темы: голосов - 64, средняя оценка - 4.58
Заблокирован

Как перевести число int в массив int digits[]

23.03.2013, 02:04. Показов 12154. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Java
1
2
3
4
5
6
7
8
9
  
String fileName1=123456;
int n=fileName1.length(),i=0;
        int digits[] = new int[n];
        while (num > 0)
        {
         digits[i++] = num % 10;
         num /= 10;
        }
так не получается (
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.03.2013, 02:04
Ответы с готовыми решениями:

Как из данных, считанных из текстового файла, Char перевести данные в массив Int?
Всем привет! Я не так давно начал изучать 'жабу' и возможно мой вопрос некоторым покажется очень ламерским. Я читаю данные по...

Реализуйте статический метод d(int a, int b, int c), который возвращает дискриминант b2-4*a*c квадратного уравнения.
Ребят, помогите решить задачи какие сможете... 1. Реализуйте статический метод d(int a, int b, int c), который возвращает дискриминант...

Как число 154678924 преобразовать в массив int
Заблудился. Помогите разобраться.

17
 Аватар для Vlad_IT
1452 / 360 / 61
Регистрация: 03.04.2010
Сообщений: 2,096
23.03.2013, 02:12
Вот функция
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
public static int[] IntToArray(int num)
{
    if (num == 0) return new int[1] { 0 };
 
    var dig = new List<int>();
 
    for (; num != 0; num /= 10)
         dig.Add(num % 10);
 
    var arr = dig.ToArray();
    Array.Reverse(arr);
    return arr;
}
0
Заблокирован
23.03.2013, 10:33  [ТС]
не работает куча ошибок, ругается на каждую строчку нельзя как то проще чтобы просто получить в конце обычный одномерный массив digits[]
чтобы можно было к нему обратится digits[1]
все импорты которые хотело добавил
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
23.03.2013, 11:29
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import java.util.Arrays;
 
public class DigitsProducer {
 
    public static int[] intToArray(int num) {
        int len = getLen(num);
        if (len == 1)
            return new int[] { num };
        int[] arr = new int[len];
        for (int i = len - 1; i >= 0; i--) {
            arr[i] = num % 10;
            num /= 10;
        }
        return arr;
    }
 
    public static int getLen(int i) {
        int count = 1;
        while ((i /= 10) != 0)
            count++;
        return count;
    }
 
    static class Test {
        public static void main(String[] args) {
            print(intToArray(0));
            print(intToArray(5));
            print(intToArray(123));
            print(intToArray(Integer.MIN_VALUE));
            print(intToArray(Integer.MAX_VALUE));
 
        }
 
        static void print(int[] a) {
            System.out.println(Arrays.toString(a));
        }
    }
}
1
23.03.2013, 13:23

Не по теме:

Цитата Сообщение от protein Посмотреть сообщение
не работает куча ошибок, ругается на каждую строчку нельзя как то проще чтобы просто получить в конце обычный одномерный массив digits[]
чтобы можно было к нему обратится digits[1]
все импорты которые хотело добавил
Пардонс, видимо мне надо больше высыпаться :D, Вы про яву спрашиваете, а я Вам на C# дал :D

0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
23.03.2013, 14:02
А ещё говорят ява память хавает, в C# способе созданы на лету 1 массива и 1 коллекция, а в ява 1 массив
1
 Аватар для Vlad_IT
1452 / 360 / 61
Регистрация: 03.04.2010
Сообщений: 2,096
23.03.2013, 14:19
Цитата Сообщение от mutagen Посмотреть сообщение
А ещё говорят ява память хавает, в C# способе созданы на лету 1 массива и 1 коллекция, а в ява 1 массив
Не, не. Ваш способ на 80% совместим с C#, немного переписав, получилось.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Text.RegularExpressions;
namespace ConsoleApplication13
{
    class Program
    {
        public static int[] intToArray(int num)
        {
            int len = getLen(num);
            if (len == 1)
                return new int[] { num };
            int[] arr = new int[len];
            for (int i = len - 1; i >= 0; i--)
            {
                arr[i] = num % 10;
                num /= 10;
            }
            return arr;
        }
        public static int getLen(int i)
        {
            int count = 1;
            while ((i /= 10) != 0)
                count++;
            return count;
        }
        static void Main(string[] args)
        {
            print(intToArray(234321));
            Console.Read();
        }
        static void print(int[] a) 
        {
            foreach (var i in a)
            {
                Console.WriteLine(i.ToString());
            }
        }
    }
}
Просто мне нужно было на свежую голову код писать :-)
Можно кстати метод getLen на C# немного сократить, (аналогично и в яве)
C#
1
public static int getLen(int i) { return ((i/=10) != 0) ? 1 + getLen(i) : 1; }
А c лямбда выражениями, еще короче
C#
1
2
3
4
5
6
7
static void Main(string[] args)
{
    int num = 123123;
    int[] outarry = Array.ConvertAll(num.ToString().ToArray(), x => (int)x - 48);
    print(outarry);
    Console.Read();
}
1
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
23.03.2013, 14:26
Цитата Сообщение от Vlad_IT Посмотреть сообщение
Можно кстати метод getLen на C# немного сократить
рекурсия, если вы не уверены что её компилятор развернёт в фор цикл, может при некоторых условиях схавать весь ваш стек,
я бы такое "сокращение" не делал бы ни в коем случае
через стринги сплит и лямбды у вас неявно выделится памяти гораздо больше чем в первом варианте )))

ну и под занавес мой способ 100% совместим с С#, если несогласны - покажите точку в которой метод intToArray в шарпе не сработает
1
23.03.2013, 14:36

Не по теме:

Цитата Сообщение от mutagen Посмотреть сообщение
рекурсия, если вы не уверены что её компилятор развернёт в фор цикл, может при некоторых условиях схавать весь ваш стек,
я бы такое "сокращение" не делал бы ни в коем случае
В данном случае, не вижу опасности.

Цитата Сообщение от mutagen Посмотреть сообщение
ну и под занавес мой способ 100% совместим с С#, если несогласны - покажите точку в которой метод intToArray в шарпе не сработает
работает. Это и есть ответ на Ваш вопрос, в C# можно сделать точно так же на один массив, а если постараться, то можно сделать в разы короче. Кстати лямбда в данном случае, думаю не сильно проигрывает по скорости.

1
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
23.03.2013, 16:09
Цитата Сообщение от Vlad_IT Посмотреть сообщение
а если постараться, то можно сделать в разы короче.
я бы с удовольствием глянул )
1
 Аватар для Vlad_IT
1452 / 360 / 61
Регистрация: 03.04.2010
Сообщений: 2,096
23.03.2013, 16:37
mutagen,
Цитата Сообщение от mutagen Посмотреть сообщение
я бы с удовольствием глянул )
есть много разных способов, хоть с LINQ(хотя это перебор). Вот еще один способ нашел
C#
1
int[] digits = 12345.ToString().ToCharArray().Select(x => (int)Char.GetNumericValue(x)).ToArray();
В интернете можно найти очень много способов. Но больше всего мне нравится, как это делает Python
Python
1
[int(x) for x in str(234124)]
тут уже C# и Java по размеру сильно проигрывают. Хотя скопрость у питона намного меньше.
1
10 / 36 / 7
Регистрация: 04.03.2013
Сообщений: 184
23.03.2013, 17:59
Я изначально хотел чарэтом по строке пройтись и вуаля, но я так понимаю памяти сожрёт неплохо.
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
23.03.2013, 18:08
Vlad_IT,
у вас все примеры через конверсию в строки, я думал у вас есть вариант "в разы короче" с подходом как у меня на чистых примитивах,
а на синтаксическом сахаре конечно шарп выигрывает

Не по теме:

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



Добавлено через 2 минуты
Цитата Сообщение от Freeman666 Посмотреть сообщение
Я изначально хотел чарэтом по строке пройтись и вуаля, но я так понимаю памяти сожрёт неплохо.
да нет просто придётся создать новый объект строку и по нему бегать и потом конвертируя в массив int создать ещё несколько Integer по количеству символов, не особо много, но не самый быстрый подход, так как в яве часто память более узкое место чем итерации камня.
0
10 / 36 / 7
Регистрация: 04.03.2013
Сообщений: 184
23.03.2013, 18:17
Java
1
2
3
4
5
6
7
8
9
10
 public static void main(String[] args) throws IOException {   
String numbers="123456";
        int digits[] = new int[numbers.length()];
for(int i=0;i<numbers.length();i++){
    digits[i] = Integer.parseInt(""+numbers.charAt(i));
}
for(int n:digits){
    System.out.println(n);
}
}
Как то так =) Некрасивый правда момент digits[i] = Integer.parseInt(""+numbers.charAt(i));
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
23.03.2013, 18:22
Цитата Сообщение от Freeman666 Посмотреть сообщение
Как то так =) Некрасивый правда момент digits[i] = Integer.parseInt(""+numbers.charAt(i));
этот момент не некрасивый, а просто ужасен
Java
1
digits[i] = Character.digit(numbers.charAt(i), 10);
1
10 / 36 / 7
Регистрация: 04.03.2013
Сообщений: 184
23.03.2013, 18:24
Ну я с чарами редко работал, так что не знал что так можно =)
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
23.03.2013, 18:29
Цитата Сообщение от Freeman666 Посмотреть сообщение
Ну я с чарами редко работал, так что не знал что так можно =)

Не по теме:

все мы чего нибудь не знаем :) никто не застрахован, привычка неговнокодить вырабатывается очень долго и тяжко,
особенно когда вокруг примеры пестрят нагромождениями объектов в случаях где можно обойтись примитивами.
Это всё следствие мощных компов и высокого уровня абстракции ЯВУ

0
 Аватар для Vlad_IT
1452 / 360 / 61
Регистрация: 03.04.2010
Сообщений: 2,096
23.03.2013, 18:36
Цитата Сообщение от mutagen Посмотреть сообщение
у вас все примеры через конверсию в строки, я думал у вас есть вариант "в разы короче" с подходом как у меня на чистых примитивах,
Не, пока придумать ничего не могу.

Цитата Сообщение от mutagen Посмотреть сообщение
ну а питон мне не по душе из-за отсутствия видимых границ изоляции контекста (да модно сразу с форматированием, но если по случайности влупить пробел гденить внутри фор или иф, и можно долго потом ловить почему программа перестала работать)
Зато разбираться в чужом коде, всегда проще. Потому что все пишут одинаково. К нему трудно привыкнуть, но если привыкнуть, то уже не отвыкнешь)

Добавлено через 5 минут

Не по теме:

Цитата Сообщение от mutagen Посмотреть сообщение
Это всё следствие мощных компов и высокого уровня абстракции ЯВУ
Программирование для серверов или JavaScript, очень быстро убирает привычку тяжелого кода. Потом даже на других языках, стараешься не написать лишнею строчку, или создать лишний объект. Хотя мало кто даже для серверов, боится за оптимизацию.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.03.2013, 18:36
Помогаю со студенческими работами здесь

Не могу нигде найти - как преобразовать массив int в строку, или сразу в число
Народ помогите пожалуйста. Число long 9876543210 было переведено в int namArr = {9876543210}. После определенных преобразований,...

Как перевести сишный unsigned int в явский int?
Кто-нибудь занимался подобным переводом кода? Поначалу я думал, что разницы вообще нет, просто есть знаковое представление и слегка...

Depricated public Date(int year,int Month, int Day)
Конструктор public Date(int year,int Month, int Day) Depricated вместо него советуют использовать public Date(long date) что то я не...

решил написать программу квадрат пифагора, я начинающий. как int перевести в строки
Здраствуйте. Я начинающий на джава, еще плохо разобрался в этом языке, решил написать программу квадрат пифагора по формуле из ...

Как строковый массив из чисел преобразовать в двумерный массив int[][]
Ребят, помогите пожалуйста с задачей Имеется массив String a, в котором хранятся числа: . Нужно преобразовать его в двумерный...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru