2013-11-25 4 views
0

В основном у меня есть основной класс, в котором я объявляю свои объекты, а затем в моем классе Person. У меня есть метод, который предназначен для добавления и объекта в массив, созданный в Класс человека. По какой-то причине это работает для первого элемента, но все остальные просто возвращают false (возвращает true, если элемент был добавлен в массив и false, если элемент не был добавлен в массив). Вот мой основной метод:Добавить объект, созданный в основном классе, в массив в другом классе

Department dept = new Department(4); 
Person john = new Person("John", 35); 
System.out.println(dept.addPerson(john)); 

и класс, который не работает:

private Person[] people; 
private int count; 
public Department(int count){ 
    people = new Person[count]; 
} 
public boolean addPerson(Person x){ 
    boolean found = false; 

    for(int i = 0; i < people.length; i++){ 
     if (people[i] == null){ 
      people[i] = x; 
      found = true; 
     } 
    } 
    return found; 
} 
+0

Рассмотрите возможность чтения раздела справки о том, как форматировать код в сообщениях. Вы делаете это неправильно, что затрудняет чтение, и на самом деле это так, нам трудно попытаться исправить это. Лучше для вас повторно отправить свой код. –

ответ

0

Ваш первый вызов метода, вы заполняете весь массив. Таким образом, индексы не будут равны нулю, следующий звонок

public boolean addPerson(Person x){ 
    boolean found = false; 

    for(int i = 0; i < people.length; i++){ // you're filling the array in this loop 
     if (people[i] == null){ 
      people[i] = x; 
      found = true; 
     } 
    } 
    return found; 
} 
0

Вы должны сломать ваш цикл после добавления что-то. Вы заполняете свой массив первым добавленным вами человеком.

for(int i = 0; i < people.length; i++){ 
    if (people[i] == null){ 
     people[i] = x; 
     found = true; 
    } 
} 

Должно быть

for(int i = 0; i < people.length; i++){ 
    if (people[i] == null){ 
     people[i] = x; 
     found = true; 
     break; 
    } 
} 
+0

Я бы не сломался, я просто вернусь прямо сейчас и там. –

+0

Да, это, вероятно, лучший вариант. Я просто добавил перерыв как quickfix. – EpicOkapi

+0

@EpicOkapi удивительный, который работает! не могли бы вы описать, что происходит в том, что я сделал? Спасибо, спасибо! – user3029711

Смежные вопросы