2014-09-26 2 views
0

Вот мой код. Он должен взять две строки и сравнить их отличительный характер по характеру.Почему я получаю ошибку «не могу найти символ» при попытке использовать локальную переменную?

import java.util.Scanner; 
public class Positions { 
public static void main(String[] args){ 
    Scanner scan = new Scanner(System.in); 
    String first = scan.next(); 
    String second = scan.next(); 
    if(first.length()>second.length()){ 
    int length = first.length(); 
    }else{ 
    int length = second.length(); 
    } 
    for(int i=0; i<length; i++){ 
    if(first.charAt(i)!=second.charAt(i)){ 
     System.out.print(i+" "+first.charAt(i)+" "+second.charAt(i)); 
    } 
    } 
} 
} 

Я получаю эту ошибку, когда я пытаюсь скомпилировать:

----jGRASP exec: javac -g Positions.java 
Positions.java:12: error: cannot find symbol 
     for(int i=0; i < length; i++){ 
        ^
    symbol: variable length 
    location: class Positions 
1 error 

----jGRASP wedge: exit code for process is 1. 
----jGRASP: operation complete. 
+2

Google «переменная область действия». – Pshemo

+0

Кандидатский дубликат http://stackoverflow.com/questions/25706216/what-does-a-cannot-find-symbol-compilation-error-mean –

ответ

7

Ваш length переменная объявлена ​​и инициализирована в каждом случае if и else, а затем сразу же отбрасывается, как из области видимости, когда блок заканчивается.

Объявите его перед if и инициализируйте его в каждом случае, поэтому он остается в зоне действия цикла for.

int length; 
if(first.length()>second.length()){ 
    length = first.length(); 
}else{ 
    length = second.length(); 
} 
Смежные вопросы