2016-04-26 74 views
-1
String[][] twoD3; 
twoD3 = {{"1234", "5435", "2345"}, {"pebbles"}}; 

上面的數組初始化有什麼問題?爲什麼我會收到編譯錯誤?錯誤是:Java中的二維數組聲明和初始化

Syntax error on token ; ,, expected.

+1

錯誤說的是什麼? – Gendarme

+0

試試這個: String [] [] twoD3 = null; twoD3 = {{「1234」,「5435」},{「2345」,「pebbles」}}; 或者: String [] [] twoD3 = {{「1234」,「5435」},{「2345」,「pebbles」}}; – Abdelhak

+0

令牌上的語法錯誤; ,預計。 - 這就是它說的 – CM1

回答

3

這有什麼用它做是一個數組的數組。你會看到這個簡單的代碼相同的錯誤與單個陣列:

String[] array; 
array = { "foo", "bar" }; 

你不能做到這一點 - 一個array initializer只能在自己的聲明中,例如使用

String[] array = { "foo", "bar" }; 

對於一個正常表達(在賦值運算符的右手側),就需要一個array creation expression,使用new關鍵字和指定數組類型:

String[] array; 
array = new String[] { "foo", "bar" }; 

或者爲您的精確例如:

String[][] twoD3; 
twoD3 = new String[][] {{"1234", "5435", "2345"}, {"pebbles"}}; 

(或者只是分配當然在申報點的值)

+0

我也收到這個錯誤:String [] array; array = new String [] {「foo」,「bar」}; – CM1

+1

@ CM1:你不應該,假設這是一個方法。什麼確切的錯誤,以及在哪裏? –

+0

線程「main」中的異常java.lang.Error:未解決的編譯問題: \t令牌上的語法錯誤「(」,; expected \t令牌上的語法錯誤「)」,;預計 \t在packageOne.ArrayGame.main(ArrayGame.java:33) – CM1

1

您必須在您聲明它的相同命令中初始化該數組。誰知道這是爲什麼,這是由java的創造者設計的選擇。

String[][] twoD3 = {{"1234", "5435", "2345"}, {"pebbles"}}; 

如果必須分開聲明和初始化,您可以使用new

String[][] twoD3; 
    twoD3 = new String[][]{{"1234", "5435", "2345"}, {"pebbles"}}; 
1

使用

String[][] twoD3; 

    twoD3 = new String[][]{{"1234", "5435", "2345"}, {"pebbles", "asd", "asd"}}; 

您需要創建一個新的實例變量初始化它。

+0

'String [] [] twoD3 = {{「1234」,「5435」,「2345」},{「pebbles」 ,「asd」,「asd」}}'也會創建一個新的實例... –

1
String[][] twoD3 = {{"1234", "5435", "2345"}, {"pebbles"}}; 

上面一行是定義並初始化2D陣列的方式。