Почему мой объект не добавляется в мой массив? - PullRequest
0 голосов
/ 30 марта 2020

У меня есть класс менеджера данных ManagementCompany, который хранит информацию о различных свойствах в массиве типов Property (определенный класс), который называется properties []. Один из методов класса предназначен для добавления свойств в этот массив и называется addProperty (Свойство p). Он должен взять данное свойство и добавить его в массив в первом доступном пространстве, если оно есть (как показано здесь:)

Property[] properties = new Property[5];

public int addProperty(Property p) {
        if (isArrayFull())                              //Method returns true if there is no space, false otherwise                             
            return -1;
        else if (p == null)                             //Make sure p is valid          
            return -2;                                          
        for (int i = 0 ; i < properties.length; i++) {          //Loop through all elements in the array
            if (properties[i] == null) {                          //If the space is empty
                properties[i] = new Property(p);                     //Assign a new property to it
                return i;                                            //Return the index of the new property
            }
        }
        return -10;                                       //Should never happen, but need it to compile                                 
}

Однако, когда я создаю и добавляю свойства в массив, только первое свойство добавлено. После добавления первого свойства программа не продолжает добавлять первое доступное пространство, а просто игнорирует их. Он не заменяет первый и не добавляет его в массив (который инициализируется длиной 5). Любые предложения о том, почему?

Тесты, которые я запускаю на нем:

ManagementCompany mgmCmp = new ManagementCompany();


Property p1 = new Property("Property 1");
mgmCmp.addProperty(p1);


Property p2 = new Property("Property 2");
mgmCmp.addProperty(p2);

System.out.println(mgmCmp.toString());

Результат: Свойство 1 null null null null

Ответы [ 3 ]

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

Следующая строка не соответствует вашим требованиям:

properties[i] = new Property(p);

Это должно быть

properties[i] = p;

Кроме этого, я рекомендую вам заменить

mgmCmp.addProperty(p1);

с помощью

System.out.println(mgmCmp.addProperty(p1));

, чтобы можно было упростить отслеживание проблемы с помощью возвращаемого значения.

Разместите полный код, если это не поможет.

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

Найден, по-видимому, не связанный метод в другом классе, из-за которого объект не сохранялся в массиве. Спасибо за совет.

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

добавлено только первое свойство ... Любые предложения о том, почему?

Из-за return i;. Вы выходите из метода после добавления одного свойства.

Надеюсь, это поможет

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