【问题标题】: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;
}

为什么找不到符号?

【问题讨论】:

标签: java for-loop multidimensional-array undefined-symbol


【解决方案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。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-02
  • 2011-09-22
  • 1970-01-01
  • 1970-01-01
  • 2021-06-25
  • 2020-06-14
相关资源
最近更新 更多