Как инициализировать массив объекта в main? - PullRequest
0 голосов
/ 20 марта 2020

У меня есть конструктор для массива объекта person:

public class Group
{
    final int MAX =10;
    private Person[] _groupOfPersons;
    private int _numOfPersons;


    public Group()
    {
        _groupOfPersons = new Person [MAX];
        _numOfPersons = 0;
    }

У меня также есть метод addPerson

Как мне объявить новый массив в main? так что я могу добавить после людей? Я получаю нулевое исключение. Я хочу назвать массив 'group1'. это массив типа Персона? или группа? Как мне создать новую группу?

Group[] group1 = new Group() \\????

Ответы [ 4 ]

0 голосов
/ 20 марта 2020

Есть действительно много способов:

public static void main(String[] args) {
    class Person {
        private String name;

        public Person(String name) {
            this.name = name;
        }

        @Override
        public String toString() {
            return "Person{" +
                    "name='" + name + '\'' +
                    '}';
        }
    }

    class Group {
        Person[] groupOfPerson = new Person[10];

        public Group() {
        }

        public Group(Person[] groupOfPerson) {
            this.groupOfPerson = groupOfPerson;
        }

        public Person[] getGroupOfPerson() {
            return groupOfPerson;
        }

        public void setGroupOfPerson(Person[] groupOfPerson) {
            this.groupOfPerson = groupOfPerson;
        }

        @Override
        public String toString() {
            return "Group{" +
                    "groupOfPerson=" + Arrays.toString(groupOfPerson) +
                    '}';
        }
    }

    Person[] people = new Person[]{new Person("foo"), new Person("bar"), new Person("baz")};
    Group aGroup = new Group(people);

    Group[] group = new Group[100];
    group[0] = aGroup;
    // group[100] = aGroup; -> Array index is out of bounds
    System.out.println("group:\n" + Arrays.toString(group) + "\n");

    Group[] group1 = new Group[1];
    group1[0] = new Group();
    group1[0].setGroupOfPerson(people);
    System.out.println("group1:\n" + Arrays.toString(group1) + "\n");

    Group[] group2 = new Group[]{aGroup};
    System.out.println("group2:\n" + Arrays.toString(group2) + "\n");

    List<Group> l = List.of(new Group(people));
    Group[] group3 = l.toArray(Group[]::new);
    System.out.println("group3:\n" + Arrays.toString(group3) + "\n");

    Group[] group4 = new Group[]{aGroup};
    group4[0].setGroupOfPerson(people);
    System.out.println("group4:\n" + Arrays.toString(group4) + "\n");

    Group[] group5 = new Group[]{aGroup};
    group4[0].getGroupOfPerson()[0] = new Person("fooMod");
    System.out.println("group5:\n" + Arrays.toString(group5) + "\n");

    Group[] group6 = new Group[100];
    group6[0] = new Group(new Person[]{new Person("foo")});
    System.out.println("group6:\n" + Arrays.toString(group6) + "\n");
}   

Вот выход:

group:
[Group{groupOfPerson=[Person{name='foo'}, Person{name='bar'}, Person{name='baz'}]}, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null]

group1:
[Group{groupOfPerson=[Person{name='foo'}, Person{name='bar'}, Person{name='baz'}]}]

group2:
[Group{groupOfPerson=[Person{name='foo'}, Person{name='bar'}, Person{name='baz'}]}]

group3:
[Group{groupOfPerson=[Person{name='foo'}, Person{name='bar'}, Person{name='baz'}]}]

group4:
[Group{groupOfPerson=[Person{name='foo'}, Person{name='bar'}, Person{name='baz'}]}]

group5:
[Group{groupOfPerson=[Person{name='fooMod'}, Person{name='bar'}, Person{name='baz'}]}]

group6:
[Group{groupOfPerson=[Person{name='foo'}]}, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null]


Process finished with exit code 0
0 голосов
/ 20 марта 2020

Если вы хотите объявить таблицу из 2 столбцов, например, в main, выполните:

Group[] group1 = new Group{2];

, чтобы заполнить столбцы, которые вы можете сделать

group1[0].setPersons(..);
group1[1].setPersons(..);
0 голосов
/ 20 марта 2020

Вы можете сделать это любым из способов, показанных ниже:

class Person {

}

class Group {
    final int MAX = 10;
    private Person[] _groupOfPersons;
    private int _numOfPersons;

    public Group() {
        _groupOfPersons = new Person[MAX];
        _numOfPersons = 0;
    }

    public Person[] get_groupOfPersons() {
        return _groupOfPersons;
    }

    public void set_groupOfPersons(Person[] _groupOfPersons) {
        this._groupOfPersons = _groupOfPersons;
    }

    public int get_numOfPersons() {
        return _numOfPersons;
    }

    public void set_numOfPersons(int _numOfPersons) {
        this._numOfPersons = _numOfPersons;
    }

    public void addPerson(Person person) {
        for (int i = 0; i < MAX; i++) {
            if (_groupOfPersons[i] == null) {
                _groupOfPersons[i] = person;
                return;
            }
        }
    }
}

public class Main {
    public static void main(String[] args) {
        Group group = new Group();

        // First way
        group.get_groupOfPersons()[0] = new Person();

        // Second way
        group.addPerson(new Person());
    }
}
0 голосов
/ 20 марта 2020

Group[] group1 = new Group[]{};

Это инициализирует пустой массив.

Если вы сделаете это так: Group[] group1 = new Group[]{new Group()};

Вы можете group1[0].setPersons(...);

...