2016-07-25 4 views
-1

Мне просто интересно, было ли законным объявлять 2-й оборванный массив с одним или несколькими столбцами, имеющими длину 0. Если это было законно, что бы оно на самом деле делало ?Объявление длины столбца 0 в массиве 2d

+2

Будет пустым массивом длины 0. Почему? –

+0

О, я просто пытаюсь изучить Java, и мне было любопытно, что произойдет. – javanewbie

+1

Вы могли бы попробовать? –

ответ

1

Ответ да, это возможно. Но тогда возникает еще один вопрос: почему вы решили это сделать? Причина, по которой я спрашиваю, это подумать о том, что вы пытаетесь сделать здесь. Массив, в котором столбцы имеют длину 0, является технически пустым двумерным массивом. Однако я покажу, как делать то, что вы просите, и что произойдет.

int[][] arr = new int[2][0]; //initializing a 2x0 array, which is 2 rows of size 0 

или если вы пытаетесь сделать Невыровненные массивы

int[][] arr = { {},{2} }; //this is a 2d array in which the first row has zero columns and the second row has one column 

Но что происходит, когда вы пытаетесь работать на этом массиве? Вы удивительно не получите ошибку компилятора, но вы получите ошибку времени выполнения. Предположим, что я добавил эту строку кода и попытался запустить программу,

arr[0][0] = 1; 

Ошибка я хотел бы получить это,

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 

, потому что я не могу получить доступ к любым элементам в 2d массив с колоннами size 0.

+0

OP специально задал вопрос об оборванных массивах, поэтому подумайте: 'int [] [] arr = {{}, {1, 2}};' –

+0

@Elliott Frisch Я вижу, я отредактирую свой ответ, чтобы разместить это. Раньше я не был знаком с этим термином, спасибо –

+0

Хорошо, я снова исправил свой ответ. Извините за мое недоразумение. –

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