2016-04-26 95 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阵列的方式。