Это для домашней работы, и я становлюсь немного расстроенным тем, как я не могу понять что-то настолько простое.Java - как вызвать метод add() в другом классе
Для упрощения моего кода у меня есть 3 файла прямо сейчас: один класс с методом add(), который я создал между прочим, один файл, который его тестирует (сделанный проф), и тот, который создает объект (который Я не буду публиковать, b/c его работа). Вот функция add().
EDIT 2: Я собираюсь добавить метод, который печатает массив, может быть, это проблема?
public class Population {
private Person[] pop = new Person[15];
private int numPop = 0;
public void add(Person c){ // this object is created in another class, it works fine
for(int i = 0; i < pop.length; i++){
if(pop[i] == null) {
pop[i] = c;
numPop++;
} else {}
}
public String listPeople(){
System.out.println("Population with "+numPeople+" people as follows:");
int i = 0;
while (i<numPeople){
System.out.println("A "+pop[i].getAge()+"year old person named "+pop[i].getName());
i++;
//FYI the get methods are working fine and are in another file.
}
return("");
}
Затем я запускаю программу в тестовом файле, чтобы обеспечить ее работу, которая была предоставлена нам. Вот та часть, которая не работает
public class PopTestProgram{ // FYI the prof created this, I can't change this
public static void main(String[] args){
Population pop = new Population(15);
pop.add(new Person(4, "Bob"));
pop.add(new Person(25, "Kim"));
// then adds 8 more people with different ages and names
// then prints the people
Она компилирует, но когда я запускаю его, он просто ставит 10 последний человек в массив, то происшествия говоря, что проблема с "pop[i] = c;"
линии. Я просто не могу понять, что мне нужно изменить здесь.
Я не получил письмо от профессора напрямую, поэтому я подумал, что попрошу здесь.
Редактировать: Вот что он показывает после распечатки последнего человека 10 раз. Он показывает проблемы с другими методами, которые я еще не завершены до сих пор, хотя ...
java.lang.ArrayIndexOutOfBoundsException: -1
at Population.removePerson(Population.java:49)
at PopTestProgram.main(PopTestProgram.java:31)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at edu.rice.cs.drjava.model.compiler.JavacCompiler.runCommand(JavacCompiler.java:272)
Какое конкретное исключение вы получаете? – kichik
Да, покажи всю штуку! –
Это похоже на ошибку с тем, что передается от «нового человека» (4, «Боб»)); линия. Не могли бы вы показать метод или, по крайней мере, показать, что значение «c» находится во время ошибки? – Spencer4134