Как я могу напечатать двумерный массив в Perl? - PullRequest
4 голосов
/ 11 июля 2009

У меня есть двумерный массив. Когда я печатаю / сбрасываю это, я получаю следующее

Мой 2-х мерный массив:

push (@matrix, \@a1Comparea2);
push (@matrix, \@a3Comparea4);

a1Comparea2 должен быть первой строкой массива a3Comparea4 должен быть второй строкой массива

$VAR1 = [
          [
            '1 6',
            '2 7',
            '3 8',
            '4 9',
            '5 10'
          ],
          $VAR1->[0],
          $VAR1->[0],
          $VAR1->[0],
          $VAR1->[0],
          [
            '7 12',
            '8 13',
            '9 14',
            '10 15',
            '11 16'
          ],
          $VAR1->[5],
          $VAR1->[5],
          $VAR1->[5],
          $VAR1->[5]
        ];

Когда я пытаюсь напечатать это с помощью следующего кода:

for (my $j= 0; $j < $rows; $j++)
{
        for (my $k= 0; $k < @a1; $k++)
        {
                print "Row:$j Col:$k = $matrix[$j][$k]\n";
        }
}

Я получаю следующий вывод:

Row:0 Col:0 = 1 6
Row:0 Col:1 = 2 7
Row:0 Col:2 = 3 8
Row:0 Col:3 = 4 9
Row:0 Col:4 = 5 10
Row:1 Col:0 = 1 6
Row:1 Col:1 = 2 7
Row:1 Col:2 = 3 8
Row:1 Col:3 = 4 9
Row:1 Col:4 = 5 10

Как видите, данные дублируются.

Ответы [ 2 ]

3 голосов
/ 11 июля 2009

Правильно ли определен массив?
Вы используете @ для массива и $ для скалярного ...
Проверьте эту статью для быстрого ознакомления .


Эта статья дает этот простой пример.

@matrix = (
        [3, 4, 10],
        [2, 7, 12],
        [0, 3, 4],
        [6, 5, 9],
      );

Это создает массив из четырех строк и трех столбцов. Чтобы напечатать элементы массива, введите:

for($row = 0; $row < 4; $row++) {
    for($col = 0; $col < 3; $col++) {
        print "$matrix[$row][$col] ";
   }
   print "\n";
}
1 голос
/ 11 июля 2009

Вы уверены, что использовали код, который вы показали выше? Может быть, вы использовали что-то вроде:

for (my $j= 0; $j < $rows; $j++)
{
        for (my $k= 0; $k < @a1; $k++)
        {
                print "Row:$j Col:$k = $matrix[$not_j][$k]\n";
        }
}

$not_j будет всегда иметь значение 0, производя ваш вывод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...