java - 不确定为什么我会收到此空指针异常错误

标签 java nullpointerexception

我正在从事一个基于文本的冒险游戏项目。它涉及装有元素的房间,以及从一个房间到另一个房间的导航。有一个名为 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;
    }
}

最佳答案

你从未初始化过myNeighbors ;它只是指向任何地方的引用。

考虑 private HashMap <String, Room> myNeighbors = new HashMap<String,Room>(); .

关于java - 不确定为什么我会收到此空指针异常错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10021398/

相关文章:

用于文本/字符串处理的 Java 库,类似于 unix/linux 实用程序

java - 如何在不出现 NullPointEreException 的情况下将数组的大小加倍?

java - 在子类的函数中使用字符串在 Java 中获取 null

java - 如何将事件监听器绑定(bind)到对话框中的 JavaFX TextFields。当字段为空时,“确定”按钮将被禁用,反之亦然

java - Spring 安全 : Error creating bean/No bean is defined

java - xml 的协调器布局

收集 Java 6 套接字垃圾

java - 如何检查html文档是否包含字符串

com.jobyab.controllers.registerController.doPost 处的 java.lang.NullPointerException

java - 为什么这段代码会导致 NullPointerException?