2015-08-26 5 views
-1

У меня есть этот массив строк:Преобразование 1D массив строк в массив 2D Струнный

String[] spltstr = {"a","b","c","d","e","f",...,"z"}; 

И мне нужно, чтобы поместить каждое значение есть в массиве, как это:

String[][] matrix; 

Я знаю размеры оба массива, и в качестве вывода мне нужна моя матрица:

matrix={{"a","b","c","d","e","f"}, 
     {"g","h","k","l","m","n"}, 
     {...................."z"}}; 

Можете ли вы сказать мне, возможно ли это? У меня проблемы, поскольку размер первого массива равен «n», а второй массив - «m» x5.

Если вы считаете, что есть лучший способ сделать это, я буду благодарен.

+1

Да, возможно. Попробуйте. – uoyilmaz

ответ

2

Это возможно.

Подумайте о картировании.

n (i,j) 
0->(0,0) 
1->(0,1) 
2->(0,2) 
3->(0,3) 
4->(0,4) 
5->(1,0) 
6->(1,1) 
7->(1,2) 

и т.д ...

Так что идея состоит в том, чтобы превратить п в пару (I, J)

+0

Спасибо, я создал функцию, которая делает следующее: 'для (INT I = 0; я

+0

'указатель', вероятно выход за пределы. Если массив представляет собой прямоугольник и есть 6 столбцов, то для того, чтобы соответствовать 26 символам, вам нужно 5 строк. Это дает 30 слотов. Это заставит «индекс» выйти из допустимого диапазона «spltstr». Другая возможность заключается в том, что вы учли это и построили зубчатый массив с последней строкой, не имеющей столько же ячеек. Тогда 'matrix [i] [j]' может быть вне диапазона, потому что внутренний цикл for всегда ссылается на длину первой строки матрицы. – bombe

+0

Да, на самом деле я обнаружил, что мой индекс растет быстрее, чем счетчики 'i' и' j', я решил это, добавив 'if (index

0

хорошо, если вы знаете размеры массива, вы можете написать а цикл - заполнить матрицу.

Имейте 3 переменных вне цикла, называемых Row, Col и Out. Вы знаете, что в строке есть буквы X. Таким образом, вы проверяете свой цикл while, если вы заполнили (X-1) -ый индекс матрицы, вы обновляете строку до строки ++ и col до 0. Каждая итерация цикла вы будете делать Col ++, а также Out ++.

Поскольку обновления Row и Col и Out обновляются, вы можете просто установить матрицу [Row] [Col] равным spltstr [Out].

Вы закончите проблему, как только закончите буквы в алфавите.

Смежные вопросы