2D-массив как переменная класса - PullRequest
0 голосов
/ 28 сентября 2019

Я не могу понять, почему я должен снова и снова упоминать тип данных массива 2d, если он объявлен как переменная класса:

public class DDR
{
    int[][] arr; 
    int m;
    int n;
    public DDR() {
        m=0;
        n=0;
        int arr[][] = new int[m][n];
    }
}

Когда я опускаю int, он говорит«это не утверждение».

Ответы [ 2 ]

2 голосов
/ 28 сентября 2019

Прямо сейчас, arr в конструкторе не переменная класса, а скорее локальная переменная, которая скрывает переменную класса.И int, и [][] являются частью типа.

Чтобы инициализировать переменную класса, не объявляйте новую переменную.Вы должны опустить как тип элемента (int), так и часть массива объявления ([][]).Кроме того, m и n имеют значения по умолчанию, равные нулю, поэтому вы можете установить их до выделения массивов:

m = 1;
n = 1;
arr = new int[m][n];
1 голос
/ 28 сентября 2019

Фраза int arr [] [] в вашем конструкторе фактически объявляет новый массив, который затеняет ваше поле.Помните, что массивы тоже являются переменными.Пропуск int делает утверждение, которое синтаксически не имеет смысла.В этом случае вам нужно назначить массив вашему полю arr типа int[][].

arr = new int[m][n];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...