首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GridWorld getAdjacentLocation()返回NullPointerException?

GridWorld getAdjacentLocation()返回NullPointerException?
EN

Stack Overflow用户
提问于 2013-04-20 02:29:53
回答 1查看 452关注 0票数 0

我的代码可以在这里找到:http://pastebin.com/tmzGgHzi

但是,当我第二次单击"step“时,它在第67行抛出了一个NullPointerException。这是因为getAdjacentLocation()方法引用了一个空对象,但是我搞不懂,我的AP老师也搞不懂。

任何帮助都是非常感谢的!谢谢!

EN

回答 1

Stack Overflow用户

发布于 2014-02-01 08:37:13

getLocation()方法返回null。

代码语言:javascript
复制
Location loc = this.getLocation();
//Loc is now null, so the following call will result in a null pointer exception
Location newLoc = loc.getAdjacentLocation(getDirection());

这是因为它正在将自己从网格中移除/它正在吞噬自己

代码语言:javascript
复制
public ArrayList<Actor> getActors(){

    ArrayList<Actor> list = new ArrayList<Actor>();
    Grid<Actor> gr = getGrid();
    Location loc = getLocation();

    atLocation = atRandomLocation();

    if(!atLocation){

        setDirection(loc.getDirectionToward(randomLocation));

        //THIS RETURNS THE CRITTER'S CURRENT LOCATION!
        Actor a = gr.get(getLocation());

        if(a != null)
        //This critter is not going to be null, so it adds it to the list
            list.add(a);

    }else
        getRandomLocation();

    //This list contains all actors to be eaten
    return list;
}

您的方法所做的是检查它是否在该位置,将其自身添加到列表中,然后吃掉它自己!

代码语言:javascript
复制
public void processActors(ArrayList<Actor> actors){

    for(Actor a : actors)
        //This list only contains the critter
        a.removeSelfFromGrid();
}

您需要做的是找到它应该移动到的下一个位置,吃掉该空间中的任何角色,然后移动。

附言:显然,如果Critter是唯一的演员,它会默认地吃自己。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16111289

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档