Попытка скопировать элемент в 2D-массиве в другой 2D-массив

У меня есть 2 массива, оба 4*4 массива. Я хочу скопировать 1 элемент из первого массива и поместить его во второй массив, а затем отобразить второй массив с новым элементом в нем. Однако я получаю ошибку.

Я использую deepToString позвоните, чтобы распечатать массивы. Ниже мой код:

    public static void main(String [] args)
    {
      System.out.print("Enter a row and column # for your first selection?");
     row = scan.nextInt();   //user enters row #
     column = scan.nextInt();   //user enters column #
     service.show(row, column);   //row and column # passed as parameters 
     System.out.println(Arrays.deepToString(board1));   //this will display board1
          //with the new element, leaving the rest of the elements untouched

     }

     Public void show(int row, int column)
      {
       Int a = row;
       Int b = column;
       board1[a][b] = board2[a][b];   //destination on left, source on right
                          //board1 is taking an element from index [a][b] in board2
       }

Линия board1[a][b] = board2[a][b]; это где я получаюNullPointerException". Я думал, что это был просто оператор присваивания для копирования одного элемента в другой массив. Есть ли более эффективный способ скопировать один элемент и отобразить новый массив? У кого-нибудь есть идея, как это исправить?

2 ответа

Решение

Очевидно, у вас есть глобальные переменные 'board1' и 'board2'. Посмотрите, где они объявлены и убедитесь, что вы распределили память. В Java вы должны выделить память массива, примерно так:

Int board1[][] = new Int[256][8];

Я думаю, что ваше имя класса является службой (или это экземпляр класса, который вы опубликовали) из вида кода, но ваш метод show() не является статическим, поэтому его нельзя получить из статического содержимого, если вы не инициировал службу как новый объект. Не могли бы вы опубликовать полный код, чтобы мы могли проверить?

Другие вопросы по тегам