Я изучаю базовую Java, и у меня небольшие проблемы с массивами объектов.Невозможно сохранить длину массива объектов в Java
Некоторые фона на этот код: У меня есть отдельный класс под названием Point1, простую точку на декартовой плоскости, свойства которых, имеющие отношение к этому вопрос заключается в том:
- 2 частные целочисленные переменные _X и _y, которые обозначают соответствующие координаты в Поинт
- конструктор с аргументами для _x и _y, например:
Point1 a = new Point1(0,0)
- общественных методов для установки х и у значения:
a.setX(int x); a.setY(int y);
Теперь меня попросили создать класс, который содержит экземпляр Point1 как массив, и у меня возникли проблемы с ним. Когда я использую этот код:
public class Polygon {
private int _vertNum;
private Point1[] _vertex = new Point1[_vertNum];
public Polygon(int verts) {
_vertNum = verts;
for(int i = 0 ; i < verts ; i++) {
_vertex[i] = new Point1(0,0);
}
}
}
Это компилируется нормально, но когда я пытаюсь создать экземпляр класса, я получаю это сообщение: java.lang.ArrayIndexOutOfBoundsException: 0
Если я добавить объявление массива в конструкторе, как это :
public class Polygon {
private int _vertNum;
private Point1[] _vertex = new Point1[_vertNum];
public Polygon(int verts) {
_vertNum = verts;
Point1[] _vertex = new Point1[_vertNum];
for(int i = 0 ; i < verts ; i++) {
_vertex[i] = new Point1(0,0);
}
}
}
Я могу создать экземпляр класса, но при осмотре его длина всегда 0, независимо от того, что я вошел в параметре конструктора.
Моя цель - создать массив точек, длина которых задается параметрами конструктора и, по крайней мере, на данный момент, установить координаты x и y всех этих точек на 0,0, чтобы я не остался с массив нулевых объектов.
Я хорошо знаю, что это, наверное, глупый вопрос, и я прошу прощения за длинный пост - я бы спросил своего профессора, но он немного необоснованный парень, поэтому я бы очень признателен за помощь. Заранее спасибо :)
Привет - забыл ответить раньше, но большое спасибо. Я переписал код в соответствии с вашими рекомендациями, и вещь работает как шарм. Иногда я забываю, что существует разница между объявлением переменной или экземпляром класса и фактической инициализацией. Еще раз спасибо за быстрый ответ :) –