Top.Mail.Ru
Ответы
Аватар пользователя
3мес
Изменено
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+2

Нужна помощь с кодом C#

Есть двумерный зубчатый массив

123456
 string[][] mass = new string[][] 
{ 
    new string[] {"Текст" }, 
    new string[] {"Текст1, Текст2" , "Текст3,Текст4"}, 
    new string[] {"Текст5, Текст6" , "Текст7"} 
}; 

пытаюсь это запихнуть в трехмерный зубчатый массив но не получается.

123456789
 string[][][] mass1 = new string[mass.Length][][]; 
 
for(int i = 0;i < mass.Length;i++) 
{ 
    for(int j = 0; j < mass[i].Length;j++) 
    { 
        mass1[i][j] = mass[i][j].Split(","); 
    } 
} 

прошу помочь а не обсирать. у меня просто от этих многомерных массивов голова кругом идет. и пытаюсь подружиться с ними.
Как только заходит во второй for сразу выдает ошибку NullReferenceExeption я знаю что это за ошибка но не понимаю почему выдает.

По дате
По рейтингу
Аватар пользователя
Новичок
3мес

string[][] mass = new string[][]
{
new string[] {"Текст" },
new string[] {"Текст1, Текст2" , "Текст3,Текст4"},
new string[] {"Текст5, Текст6" , "Текст7"}
};

// Создаем трехмерный зубчатый массив
string[][][] mass1 = new string[mass.Length][][];

for(int i = 0; i < mass.Length; i++)
{
// Инициализируем второй уровень массива
mass1[i] = new string[mass[i].Length][];

for(int j = 0; j < mass[i].Length; j++)
{
// Разделяем строки по запятым и убираем возможные пробелы
mass1[i][j] = mass[i][j].Split(',').Select(s => s.Trim()).ToArray();
}
}

Ключевые изменения:

Добавлена инициализация mass1[i] = new string[mass[i].Length][]; перед внутренним циклом

Добавлен .Trim() к каждому элементу после разделения, чтобы убрать лишние пробелы

Использован .ToArray() для преобразования результата в массив

Теперь mass1 будет правильно содержать все элементы, разделенные запятыми.

Аватар пользователя
Искусственный Интеллект
3мес

Ты удивишься, но ИИшный ответ сверху в кои-то веки правильный. Ты просто не создаешь соотв. промежуточное измерение:

1
 mass1[i] = new string[mass[i].Length][]; 


Хочу, однако, добавить, что мне за четверть века карьеры 3-хмерный массив не понадобился ни разу. Вот просто совсем. И тебе не советую.

Аватар пользователя
Мудрец
3мес

Все просто(дам совет по освоению темы). Представь двумерный массив в виде матрицы. Например, каждый столбец - это одномерный массив. А вот набор таких столбцов(т.е. вся матрица) - это уже двумерный массив. Чтобы указать на конкретный элемент, тебе нужно указать для начала номер столбца(выбрать массив из набора), а затем в этом выбранном массиве выбрать элемент нужный.

Для обобщения, не нужно представлять кубы или ещё что. Нужно работать с абстракциями. Представление тут уже не нужно. Ты просто должен понимать эту "матрёшку", и все. У тебя какой то набор иерархически упорядоченных чисел. Все. Каждый элемент(число, хотя конечно это необязательно число) имеет свой индекс. У двумерного массива два индекса, трехмерного - три, и т.п.