我错过了一个变量吗?

时间:2012-04-04 23:48:28

标签: java variables hashmap

我正在开发一个基于文本的冒险游戏项目。它包括带有物品的房间以及从一个房间到另一个房间的导航。有一个叫做Item的类,这个叫做Room的大类。除了我的addItem方法之外,我的所有方法都能正常工作。它应该将物品放入空房间或更换房间的物品(如果它已经存在)。我可以在创建新房间时将项目放入房间,并且我的removeItem方法可以正常工作,但addItem既不适用于空房间也不适用于整个房间。我错过了某种"房间"变量(我的教授没有提到这样的东西)或者我的项目变量有问题吗?以下是Room Room的完整代码:

    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){
        i = item;
    }

    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;
    }
}

3 个答案:

答案 0 :(得分:2)

更改i = item;

item = i;

答案 1 :(得分:2)

public void addItem (Item i){
    item = i;
}

是这个错误吗?

希望这有帮助。

菲尔

答案 2 :(得分:0)

正在发生的事情是,您提供i参数,对item的引用,实例变量,而不是相反。该方法结束,i不再存在,没有任何变化。