Проблема с 4D массивом - PullRequest
       15

Проблема с 4D массивом

1 голос
/ 30 марта 2012

Может кто-нибудь объяснить, почему я получаю эту ошибку

Type mismatch: cannot convert from String to String[][][]

в этом коде?

String [][][][] names = {"zach","zach","zach","zach"};

Ответы [ 2 ]

5 голосов
/ 30 марта 2012

Переменная

String[][][][] names

- это переменная, представляющая четырехмерный массив строк, то есть массив массивов массивов строк. Буквально

{"zach","zach","zach","zach"};

Является одномерным массивом строк с четырьмя элементами в нем. Обратите внимание на различие - массив из четырех элементов представляет собой String[], а не String[][][][]. В одномерном массиве может быть сколько угодно элементов. Добавление большего количества измерений в массив полезно, если вы хотите представить что-то вроде двумерной или трехмерной сетки, но неверно сказать, что массив содержит больше элементов.

Чтобы исправить это, вы хотите написать

String[] names = {"zach","zach","zach","zach"};

Это действительно работает правильно.

Если вам нужен 2D-массив строк, вы можете сделать что-то вроде этого:

String[][] nameGrid = {
                         {"Alice", "Bob", "Charlie"},
                         {"David", "Eliza", "Fred"},
                         {"Gary", "Helen", "Isaac"},
                      };

Здесь данные являются двумерными - вы выбираете, какую строку вы хотите использовать в качестве первого индекса массива, а какой столбец - в качестве второго индекса массива. Обратите внимание, что число элементов массива в каждой строке и столбце не зависит от количества измерений в массиве, поскольку это отдельные понятия.

Надеюсь, это поможет!

0 голосов
/ 30 марта 2012

Если вы хотите 1D массив;

String[] names = {"zach","zach","zach","zach"};

Если вы хотите массив 4D;

// Only filling one dimension of the 4D array
String [][][][] names = {{{{"zach","zach","zach","zach"}}}};

Reference; http://msdn.microsoft.com/en-us/library/aa288453(v=vs.71).aspx

...