2016-04-26 6 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"}}; or: Строка [] [] 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 Ошибка синтаксиса на токене "(",; ожидается \t Ошибка синтаксиса на токене ")",; Ожидаемый \t at 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.