2015-03-04 3 views
1

Так что у меня этот метод:Как инициализировать эту переменную?

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 возвращает истину или ложь, а затем возвращает разные вещи в зависимости от того, если это правда или ложь. Проблема в том, что путь переменной не был инициализирован, и я не совсем уверен, как его инициализировать, потому что я хочу вернуть путь, если это метод findPath является истинным.

+0

MazeLocationList путь; есть ли значение по умолчанию? или вам нужно что-то вычислить? –

ответ

1

В коде есть основной недостаток.

path - это локальная переменная метода. Таким образом, он не может быть доступен другим методам, если он не передан в качестве аргумента.

Поскольку в вашем методе findPath вы не получаете/пропускаете path, возвращаемый путь на самом деле мало смысла.

Вы можете инициализировать path либо null или new MazeLocationList(), но это не будет никакой пользы, так как path не изменяется.

1

Ваш путь переменной не получает никакого значения вообще, поэтому не имеет значения, инициализирован он или нет.

Какова идея возврата пути, если значение никогда не изменяется?

EDIT:

Если вы хотите, чтобы вернуть экземпляр 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(); 
} 
+0

То, что я пытаюсь сделать, это вернуть экземпляр MazeLocationList, но я не совсем уверен, как это сделать. –

+0

См. Мое редактирование выше. Если вы просто хотите вернуть экземпляр, инициализируйте его новым экземпляром MazeLocationList или просто верните его в оператор if. – NDY

+0

Теперь я получаю ошибку компилятора, которая говорит, что MazeLocationList является абстрактным и не может быть создан. Предполагается, что программа должна возвращать экземпляр MazeLocationList, и если нет пути для метода findpath, он просто возвращает null. Я просто смущен тем, что означает возвращение и экземпляр MazeLocationList. –

Смежные вопросы