我的符号迷失在迷宫中[关闭]

Posted

技术标签:

【中文标题】我的符号迷失在迷宫中[关闭]【英文标题】:My Symbol is Lost in the Maze [closed] 【发布时间】:2017-04-23 04:34:07 【问题描述】:

我正在创建一个迷宫游戏,作为大学评估的一部分。我打算遍历迷宫板,直到找到角色'&',然后返回玩家的y坐标(我已经完成了相同的方法来获取x位置并得到相同的错误)

我得到的错误:

MazeGame.java:133: error: cannot find symbol  
return i;  
^  
symbol:   variable i  
location: class MazeGame  
1 error  

还有,我的代码,

public static int getCurrentYPosition() 
    for (int i = 0; i < numberOfRows; i++) 
        for (int n = 0; n < board[i].length; n++) 
            if (board[i][n] == '&') 
                break;
            
        
    
    return i;

为什么找不到符号?

【问题讨论】:

对不起,这不是 *** 的工作方式。 “这是我的代码,它不起作用,谁能帮我弄清楚” 形式的问题被认为是题外话。请访问help center并阅读How to Ask了解更多信息,尤其是阅读Why is “Can someone help me?” not an actual question? 【参考方案1】:

i 不在循环之后的范围内。 return 当你找到它时,并用哨兵处理找不到角色的情况(如-1)。而且,正如所写的,break 仅适用于 inner 循环(因此,如果我们通过增加其范围来使 i 可见),那么您将return numberOfRows i 在此之前递增。所以,我认为你真的想要类似的东西

public static int getCurrentYPosition() 
    for (int i = 0; i < numberOfRows; i++) 
        for (int n = 0; n < board[i].length; n++) 
            if (board[i][n] == '&') 
                return i;
            
        
    
    return -1;

请注意,您也可以使用for-each 循环来编写它

for (int i = 0; i < numberOfRows; i++) 
    for (char ch : board[i]) 
        if (ch == '&') 
            return i;
        
    

return -1;

【讨论】:

你知道这段代码和原来的代码不同吧?原始代码中的break 只破坏了内部循环(尽管这实际上没有意义),如果i 仍然在范围内,如预期的那样,return 语句将返回numberOfRows,而不是-1。我同意您的代码更有意义,但是您应该在答案中提及对逻辑的这些更改。不过,+1。

以上是关于我的符号迷失在迷宫中[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

试图复制迷宫算法

如何用C ++制作迷宫中的可移动角色[关闭]

在迷宫游戏中添加时间限制[关闭]

做 hittest 时,圆圈对迷宫的不可见部分做出反应

17SAM文件格式说明(转载迷宫中的将军)

在 C++ 中使用递归回溯迷宫