2014-02-24 94 views
-1

我寫了這個方法,將一個對象添加到陣列 ,但它讓我這個錯誤Java錯誤顯示java.lang.NullPointerException

Exception in thread "main" java.lang.NullPointerException 

我檢查所有的變量,我認爲沒有什麼空:((

這是我的add方法

} 
} 

錯誤是在add_b()方法

Exception in thread "main" java.lang.NullPointerException 
    at Kindergarten.add_b(Kindergarten.java:39) 
    at ClientClass.main(ClientClass.java:22) 
+0

粘貼堆棧跟蹤。 – Pankaj

+2

您需要(1)向我們展示所有代碼,而不僅僅是您認爲問題可能出現的部分(2)告訴我們在堆棧跟蹤中實際提及哪條線,因此我們不必猜測。沒有這些東西,沒有人可以幫助你。 –

+0

@DavidWallace我很抱歉,這是我第一次問這裏,我編輯它,你能幫助我嗎? :( –

回答

1

您有錯誤幼兒園的構造函數,而不是初始化改編,要創建局部變量,它應該是這樣的:

public Kindergarten(String name, int numOfbaby) { 
    this.name = name; 
    arr = new BABY[numOfbaby]; 
    currnt = 0; 
} 

其次,你有一個ininite循環,移動指令輸入的閱讀進入循環。

另一個問題是,你有無效的格式參數,只需使用普通的串聯

最後,但並非最不重要,你在display_all方法缺少System.out.println

循環應該這樣開始:

所有的
Kindergarten k = new Kindergarten("baby", 10); 

while (true) { 
    System.out 
      .println("what do you want to do? \n a-add a baby. \n b-search for a baby \n c-Delet a baby. \n d-Display all babys.\n e-how many babys need inoculation \n f-exit"); 
    char f = read.next().charAt(0); 
//(...) 
} 
+0

另一個問題是,在主要的'BABY'是用'null'年齡創建的,然後在'Kindergarten.add_b(BABY)'中使用了copy-constructor,它試圖檢索th從嬰兒開始。 – gla3dr

+0

@ gla3dr實際上,年齡不是'null',只是'0',但我想這也應該在創作過程中加以說明。 –

+0

@endriu_l請您澄清一下「將指令和輸入讀入循環。」我不好英文對不起<是的,現在我有無限循環。你的意思是我刪除while循環? –

0

一是arr初始化只發生在第二幼兒園構造函數。 在第一個幼兒園構造函數中,arr是一個局部變量。 BABY arr[]=new BABY[numOfbaby];

此外,像setarr,未被使用setnamesetcurrnt方法。如果不使用,清理它們會很好。

+0

是的,我知道我不使用它,但這是一個家庭作業,他們要求我們這樣做,非常感謝你 –

相關問題