Поэтому у меня есть этот метод:
public MazeLocationList solve(){
boolean solved = true;
int startrow = x[0][0];
int startcol = x[0][0];
MazeLocationList path;
boolean S = findPath(startrow, startcol, 15, 20);
if (S == false){
solved = false;
return null;
} else {
return path;
}
}
То, что я пытаюсь сделать, это пытаться проверить, возвращает ли метод findPath true или false, а затем возвращает разные вещи в зависимости от того, является ли это true или false. Проблема в том, что путь переменной не был инициализирован, и я не совсем уверен, как его инициализировать, потому что я хочу вернуть путь, если метод findPath является истинным.
Ваш путь переменной не получает никакого значения вообще, поэтому это не имеет значения, если он инициализирован или нет.
Какова идея возврата пути, если значение никогда не изменяется?
РЕДАКТИРОВАТЬ:
Если вы хотите вернуть экземпляр MazeLocationList
, просто выполните
MazeLocationList path = new MazeLocationList();
или вместо возвращаемого пути верните экземпляр:
return new MazeLocationList();
Как это:
public MazeLocationList solve(){
boolean solved = true;
int startrow = x[0][0];
int startcol = x[0][0];
boolean foundPath = findPath(startrow, startcol, 15, 20);
if (!foundPath){
solved = false;
return null;
}
return new MazeLocationList();
}
В вашем коде есть главный недостаток.
path
- это локальная переменная метода. Таким образом, он не может быть доступен другим методам, если он не передан в качестве аргумента.
Поскольку в вашем методе findPath
вы не получаете/пропускаете path
, возвращаемый путь на самом деле имеет мало смысла.
Вы можете инициализировать path
до null
или new MazeLocationList()
но это не принесет пользы, поскольку path
не изменяется.