這是用於作業,我對如何弄清楚如此簡單的事情感到有些沮喪。爲了簡化我的代碼,我現在有3個文件:一個類帶有一個add()方法,我創建了其他東西,一個測試它的文件(由prof創建)以及一個創建對象的文件我不會發布,B/C的工作)。這是add()函數。Java - 如何在另一個類中調用add()方法
編輯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