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

Как строковый массив из чисел преобразовать в двумерный массив int[][]

20.12.2017, 13:38. Показов 2616. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ребят, помогите пожалуйста с задачей

Имеется массив String[] a, в котором хранятся числа:

["1 26 85", "89 265 86", "896 745 36"].
Нужно преобразовать его в двумерный массив int[][]:

[
[1, 26, 85],
[89, 265, 86],
[896, 745, 36]
]
И нужно найти сумму каждой цифры этих чисел.

[
[1, 8, 13],
[17, 13, 14],
[23, 16, 9]
]
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.12.2017, 13:38
Ответы с готовыми решениями:

Преобразовать массив String в двумерный массив int
Всем привет. Имеется массив String a, в котором хранятся числа. Требуется преобразовать его в двумерный массив int c, чтобы совершать...

Как преобразовать байтовый массив в строковый список?
Всем здравствуйте. Есть байтовый массив состоящий из управляющих символов в начале и конце и кодов ASCII с разделителями в виде TAB и...

Как задать в коде двумерный строковый массив
Прошу помочь... Как задать в коде двумерный стринговый массив ? Работаю в вс 2005.

8
Mobile Software Engineer
Эксперт С++
 Аватар для Ev[G]eN
5381 / 1585 / 956
Регистрация: 23.01.2011
Сообщений: 3,214
20.12.2017, 18:09
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
    public static void main(String[] args) {
        String[] array = new String[] {
                "1 26 85",
                "89 265 86",
                "896 745 36"
        };
 
        int[][] matrix = convert(array, " ");
        System.out.println(Arrays.deepToString(matrix));
        System.out.println(Arrays.deepToString(sumEachElementDigits(matrix)));
    }
 
    static int[][] convert(final String[] stringMatrix, final String elementsDelimeter) {
        return Arrays.stream(stringMatrix)
                .map(stringRow -> Arrays.stream(stringRow.split(elementsDelimeter))
                        .mapToInt(Integer::valueOf)
                        .toArray()
                ).toArray(int[][]::new);
    }
 
    static int[][] sumEachElementDigits(final int[][] matrix) {
        return Arrays.stream(matrix)
                .map(row -> Arrays.stream(row)
                        .mapToObj(String::valueOf)
                        .map(stringValue -> Arrays.stream(stringValue.split(""))
                                .mapToInt(Integer::valueOf)
                                .reduce(0, (sum, digit) -> sum + digit))
                        .mapToInt(Integer::valueOf)
                        .toArray()
                ).toArray(int[][]::new);
    }
2
0 / 0 / 0
Регистрация: 28.06.2017
Сообщений: 3
20.12.2017, 18:42  [ТС]
Ev[G]eN, спасибо. Я еще столько не знаю. В задании с помощью String split нужно сделать
0
Mobile Software Engineer
Эксперт С++
 Аватар для Ev[G]eN
5381 / 1585 / 956
Регистрация: 23.01.2011
Сообщений: 3,214
20.12.2017, 18:49
Цитата Сообщение от V9chesl9v Посмотреть сообщение
В задании с помощью String split нужно сделать
так с его помощью и делаю ведь
0
 Аватар для Aviz__
2741 / 2050 / 507
Регистрация: 17.02.2014
Сообщений: 9,470
20.12.2017, 19:25

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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
public class CyberForum {
    private static int [][] numsFromStr = new int[3][3];
    private static int [][] sumNumsFromStr = new int[3][3];
 
    public static int [] getNumsFromString(String text){
        int [] tmp = new int[6];
        int firstBorder = text.indexOf(' ');
        int num = 0;
        int summ = 0;
        for (int i = 0; i < firstBorder; i++) {
            int tmpNum = Character.getNumericValue(text.charAt(i));
            summ += tmpNum;
            num += tmpNum*Math.pow(10,(firstBorder - 1 - i));
        }
        tmp[0] = num;
        tmp[1] = summ;
        int secondBorder;
        int tmpIndex = 1;
        do {
            num = 0;
            summ = 0;
            secondBorder = text.indexOf(' ', firstBorder + 1);
            if (secondBorder > 0) {
                for (int i = firstBorder + 1; i < secondBorder; i++) {
                    int tmpNum = Character.getNumericValue(text.charAt(i));
                    summ += tmpNum;
                    num += tmpNum*Math.pow(10,(secondBorder - 1 - i));
                }
                tmp[++tmpIndex] = num;
                tmp[++tmpIndex] = summ;
                firstBorder = secondBorder;
            }
            else {
                for (int i = firstBorder + 1; i < text.length(); i++) {
                    int tmpNum = Character.getNumericValue(text.charAt(i));
                    summ += tmpNum;
                    num += tmpNum*Math.pow(10,(text.length() - 1 - i));
                }
                tmp[++tmpIndex] = num;
                tmp[++tmpIndex] = summ;
            }
        } while (secondBorder > 0);
        return tmp;
    }
 
    private static void printValueArr(int[][] arrTarget){
        for (int [] row : arrTarget) {
            for (int val : row)
                System.out.printf("%6d",val);
            System.out.println();
        }
    }
 
    public static void main(String[] args) {
        int [] forFillMix;
        String [] strNums = {"190 22 5", "89 265 86", "896 745 36"};
        for (int row = 0; row < 3; row++) {
            forFillMix = getNumsFromString(strNums[row]);
            for (int i = 0; i < 3; i++) {
                numsFromStr[row][i] = forFillMix[2*i];
                sumNumsFromStr[row][i] = forFillMix[2*i + 1];
            }
 
        }
        System.out.println("Числа:");
        printValueArr(numsFromStr);
        System.out.println("Суммы их цифр:");
        printValueArr(sumNumsFromStr);
    }
}
Добавлено через 3 минуты
Цитата Сообщение от V9chesl9v Посмотреть сообщение
String split нужно сделать
не интересно split-ом. Как видите без него преобразование в числа проще))

Добавлено через 6 минут
Ev[G]eN, простите, "простота", по сравнению с вашим кодом, сомнительная))
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
20.12.2017, 19: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
public class Main {
 
    public static void main(String[] args) {
        String[] str = new String[]{"1 26 85", "89 265 86", "896 745 36"};
        String[][] str2 = new String[str.length][];
 
        for (int i = 0; i < str.length; i++) {
            str2[i] = str[i].split(" ");
        }
        int[][] arr = new int[str2.length][str2[0].length];
 
        for (int i = 0; i < 3; i++) {
            for (int j = 0; j < 3; j++) {
                arr[i][j] = digitSum(str2[i][j]);
            }
        }
        for (int[] anArr : arr) {
            for (int anAnArr : anArr) {
                System.out.print(anAnArr + "\t");
            }
            System.out.println();
        }
    }
 
    private static int digitSum(String s) {
        int res = 0;
        if (s.length() > 1) {
            for (int i = 0; i < s.length(); i++) {
                res += Integer.parseInt(String.valueOf(s.charAt(i)));
            }
        } else res = Integer.parseInt(String.valueOf(s));
        return res;
    }
}
0
20.12.2017, 19:33

Не по теме:

Цитата Сообщение от Aviz__ Посмотреть сообщение
"простота", по сравнению с вашим кодом, сомнительная))
мне, откровенно говоря, было бы просто лень писать столько кода :) но это никак не значит, что Ваше решение чем-то хуже :)

0
 Аватар для Aviz__
2741 / 2050 / 507
Регистрация: 17.02.2014
Сообщений: 9,470
20.12.2017, 19:36
Ev[G]eN, количество кода обратно пропорциональна мастерству))
Спасибо, за мастеркласс!
0
0 / 0 / 0
Регистрация: 28.06.2017
Сообщений: 3
21.12.2017, 14:34  [ТС]
Спасибо всем
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.12.2017, 14:34
Помогаю со студенческими работами здесь

Как задать двумерный строковый-цифренный массив
как задать двумерный строковый-цифренный массив и какие библиотеки при этом подключать?

Преобразовать сроку чисел CHAR в массив чисел типа int
Помогите реализовать идею... Прегнать введённую сроку чисел char в массив int ... чтоб элемент char str соответсвовал int mas.... ...

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

Преобразовать строку в двумерный массив чисел
есть строка с четным количеством значений()могут быть некоторые пустые, но это тоже значения пример: 1,2,,4,, нужно из этой строки...

Строковый массив в int массив
Нужно ввести длинное число. Хочу сделать через char-массив, а потом присвоить значения индексов char-массива для int-массива, т.к. с вторым...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru