Исключение нулевого указателя генерируется, когда приложение пытается использовать null в случае, когда требуется объект. К ним относятся:
null
. null
. null
, как если бы это был массив. null
, как если бы это был массив. null
как будто это было значение Throwable. Приложения должны бросать экземпляры этого класса, чтобы указать на другие незаконные использования объекта null
.
Ссылка: http://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html
Для создания массива массивов или более точно массива arrayrefs попробуйте что-то вроде этого:
my @array = ();
foreach my $i ( 0 .. 10 ) {
foreach my $j ( 0 .. 10 ) {
push @{ $array[$i] }, $j;
}
}
Это продвигает значение на разыменованный arrayref для Вас. Необходимо смочь получить доступ к записи как это:
print $array[3][2];
Взгляните на perlref и perldsc, чтобы видеть, как сделать вложенные структуры данных, как массивы массивов и хеши хешей. Очень полезный материал, когда Вы делаете Perl.
Измените свою строку "нажатия" на это:
push(@{$array2d[$i]}, $_);
Вы в основном делаете $array2d [$i] массив путем окружения его {}... Вы затем можете продвинуть элементы на этот массив ссылок на массив.
Другой простой путь состоит в том, чтобы использовать хеш-таблицу и использовать эти два индекса массива для создания ключа хеша:
$two_dimensional_array{"$i $j"} = $val;
Нет действительно никакого различия между тем, что Вы записали и это:
@{$array2d[$i]} = <FILE>;
я могу только предположить, что Вы выполняете итерации через файлы.
, Чтобы постараться не отслеживать счетчик, Вы могли сделать это:
...
push @array2d, [ <FILE> ];
...
, Который говорит 1) создают ссылку на пустой массив, 2) что хранение всех строк в ФАЙЛЕ, 3) продвигают его на @array2d
.