2013-12-06 2 views
0

Я пытаюсь вернуть значение моей логической переменной localFound в конце моего кода, но при компиляции я получаю сообщение об ошибке, в котором говорится, что он не может найти символ. Я знаю, что это ошибка, связанная с областью действия переменной, но я не знаю, как ее исправить. Как заставить мою программу вернуть правильное значение? Благодарю.Почему я получаю ошибку «не могу найти символ» в моей java-программе при компиляции?

public static boolean addIfNotEmpty(DvdTreeNode root, String movieToCommand) { 

    if (root == null) { 
    return false; 
    } 
    addIfNotEmpty(root.getRight(), movieToCommand); 
    if (root.getItem().getTitle().equalsIgnoreCase(movieToCommand)) { 
    root.getItem().addCopy(); 
    System.out.println("You have added another copy of \"" 
    + movieToCommand 
    + "\" to the inventory."); 
    boolean localFound; 
    localFound = true; 
    } 
    addIfNotEmpty(root.getLeft(), movieToCommand); 
    return localFound; 
} // end addIfNotEmpty 
+0

Пожалуйста, отметьте строку, указанную в ошибке, чтобы ее было легче найти. – user60561

+1

Поместите 'boolean localFound''' 'выражение' if'. вы можете положить чуть ниже объявления метода – Baby

ответ

5

localFound не определен в рамках вашего return заявления. Он существует только в вашем заявлении if.

Переместите декларацию за пределами своего оператора if и инициализируйте его значением по умолчанию, например false.

+0

Я сделал это, и теперь он говорит мне, что переменная может быть не инициализирована. – jdc987

+0

@ jdc987, то сначала установите значение false, потому что вы устанавливаете его в true (противоположное) в if-boolean localFound = false; –

+0

Сделайте так, как @Bucco и Makoto скажите, или добавьте оператор 'else', установив его на некоторое значение. Ошибка, которую вы получаете, заключается в том, что компилятор видит, что есть случаи (когда '! Root.getItem(). GetTitle(). EqualsIgnoreCase (movieToCommand' в вашем случае), где переменная не будет инициализирована. – eebbesen

1

Переменная localFound объявлен в если заявление на, таким образом, это не видно снаружи этого заявления. Попробуйте объявить его прямо перед , если (вне его), и вы получите компиляцию кода.

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