我正在研究一個基於文本的冒險遊戲項目。它涉及房間內的物品,並從一個房間到另一個房間導航。有一個叫Item的類,這個叫做Room的大類。我所有的方法似乎除了addNeighbor(大概也是getNeighbor),我創建了一個房間,並且工作得很好,我創建了第二個房間,但是當我嘗試添加一個鄰居時,它崩潰並給了我一個空指針異常。我在這裏做錯了什麼?不知道爲什麼我得到這個空指針異常錯誤
public class Room
{
private String roomDescription;
private Item item;
private HashMap <String, Room> myNeighbors;
public Room (String pDescription){
roomDescription = pDescription;
item = null;
}
public Room (String pDescription, Item pItem){
roomDescription = pDescription;
item = pItem;
}
public String getRoomDescription(){
return roomDescription;
}
public Item getItem(){
return item;
}
public void addItem (Item i){
item = i;
}
public boolean hasItem(){
if(item != null){
return true;
}else{
return false;
}
}
public void addNeighbor (String pDirection, Room r){
myNeighbors.put(pDirection, r);
}
public Room getNeighbor (String pDirection){
return myNeighbors.get(pDirection);
}
public Item removeItem(){
item = null;
return item;
}
public String getLongDescription(){
String longDescription = "You are at " + roomDescription + "You see " + item;
return longDescription;
}
}
你需要'new' _myNeighbors_在構造 – mshsayem 2012-04-05 01:10:48
答案通常是顯而易見如果你只是看看拋出行NPE並檢查該行上的哪個變量爲空。這是一個你應該儘可能自己開始做的過程。 – 2012-04-05 01:11:07
另請注意,您的'removeItem'方法將始終返回null。你可能想要做的是這樣的:'{item oldItem = item; item = null;返回oldItem; }' – 2012-04-05 01:13:03