Мой символ потерян в лабиринте

Я создаю игру-лабиринт как часть оценки университета. Я собирался пройтись по лабиринту, пока не найду персонажа '&' а затем вернуть координату у игрока (я сделал тот же метод для получения позиции х и получить ту же ошибку)

Ошибка, которую я получаю:

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

Почему он не может найти символ?

1 ответ

Решение

i не в области после цикла. return когда вы найдете его, и обработать случай, когда персонаж не найден с помощью стража (например, -1). И, как написано break будет применяться только к внутреннему циклу (так что если мы сделаем i например, если увеличить его область видимости) returnnumberOfRows как 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;
Другие вопросы по тегам