首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java扫雷游戏中Stackoverflow异常

java扫雷游戏中Stackoverflow异常
EN

Stack Overflow用户
提问于 2011-07-12 22:23:02
回答 4查看 846关注 0票数 2

我试着用Java做一个扫雷游戏,但是我总是遇到这个错误。此函数将当前正方形设置为已单击,并将任何相邻正方形设置为要单击并递归继续。当它用完方块时,它应该会停止,但即使我将字段大小设置为2x2,并且没有矿,它也会溢出。

代码语言:javascript
复制
public void setClicked(boolean clicked){
    this.clicked = clicked;
    if(adjacentMines == 0)
        for(mine m : adjacent){
            if(!m.isClicked() && !m.isMine()){
                setClicked(true); //Should be m.setClicked(true);
            }
        }
}

问题解决了,我错过了“m”在我的方法调用中。感谢大家的帮助。

EN

回答 4

Stack Overflow用户

发布于 2011-07-12 22:25:04

你需要在邻近的矿上调用setClicked,而不是在原来的矿上,否则,你会一次又一次地调用源矿的setClicked(true)

代码语言:javascript
复制
public void setClicked(boolean clicked){
    this.clicked = clicked;
    if(adjacentMines == 0)
        for(mine m : adjacent){
            if(!m.isClicked() && !m.isMine()){
                m.setClicked(true); // setClicked should be called on the adjacent mine, not on itself!
            }
        }
}
票数 4
EN

Stack Overflow用户

发布于 2011-07-12 22:25:30

您正在同一个矿上调用setClicked,而不是在相邻的矿上调用。

更改为:

代码语言:javascript
复制
public void setClicked(boolean clicked){
    this.clicked = clicked;
    if(adjacentMines == 0)
        for(mine m : adjacent){
            if(!m.isClicked() && !m.isMine()){
                //missing the "m."
                m.setClicked(true);
            }
        }
}
票数 1
EN

Stack Overflow用户

发布于 2011-07-12 22:26:34

我只能猜测setClicked()方法是mine的成员,但是您不应该在条件中调用m.setClicked(true)而不仅仅是setClicked(true)

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

https://stackoverflow.com/questions/6665711

复制
相关文章

相似问题

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