2012-03-29 3 views
1

Может кто-то пожалуйста, объясните, почему я получаю эту ошибкуПроблемы с 4D массива

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

в этом коде?

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

Вы, кажется, путаете размеры и размеры. Каждое дополнительное измерение добавляет «внутренний» массив, поэтому в основном массив массивов и т. Д. В то время как размер состоит в том, сколько элементов он может удерживать. –

ответ

5

переменной

String[][][][] names 

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

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

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

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

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

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

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

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

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

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

0

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

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

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

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

Ссылка; http://msdn.microsoft.com/en-us/library/aa288453(v=vs.71).aspx

+0

Ваша инициализация 4D не компилируется. – Diego

+0

Эта инициализация в моей системе очень проста. – templatetypedef

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