2012-03-29 74 views
1

是否有人可以解釋爲什麼我得到這個錯誤麻煩與四維陣列

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

在這個代碼?

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

您似乎混淆了尺寸和尺寸。 每個額外的維度添加一個「內部」數組,所以基本上是一個數組等數組。 而尺寸是它可以容納多少元素。 – 2012-03-29 23:24:29

回答

5

可變

String[][][][] names 

是表示字符串的四維陣列的變量 - 即,字符串的數組的數組的數組的數組。字面

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

是一個含有四個元素的單維字符串數組。注意區別 - 四個元素的數組是String[],而不是String[][][][]。一維數組可以包含儘可能多的元素。如果要表示類似於2D或3D網格的內容,則向該數組中添加更多維度非常有用,但這不是說數組擁有更多元素的正確方法。

爲了解決這個問題,你想寫

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

這確實正常工作。

如果你想字符串的二維數組,你可以做這樣的事情:

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

這裏,數據是二維的 - 你選擇你想作爲第一個數組索引哪一行,以及您希望作爲第二個數組索引的列。請注意,每個行和列中數組元素的數量與數組中維數的大小無關,因爲這些是單獨的概念。

希望這會有所幫助!

0

如果你想要一維數組;

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 2012-03-29 23:31:38

+0

這個初始化在我的系統上編譯得很好。 – templatetypedef 2012-03-29 23:35:21