2011-05-03 2 views
1

를 선언 한 후 컴파일러에 의해 찾을 수 없습니다 :RandomAccessFile의는 내가 컴파일 할 때 아래 코드는 다음과 같은 오류가 발생

찾을 수없는 기호
기호 : 오류에 의해 생성된다

변수 airplanesFile 마지막 진술.

RandomAccessFile 개체가 선언 된 후에 찾을 수없는 이유는 무엇입니까?

감사합니다.

public static void main(String[] args) 
{ 

    try 
    { 
     RandomAccessFile airplanesFile = new RandomAccessFile("airplanesFile.ran", "rw"); 
    } 
    catch (FileNotFoundException fnfe) 
    { 
     fnfe.printStackTrace(); 
    } 

    airplanesFile.writeUTF("Test"); 
} 

답변

0

범위를 벗어났습니다. try catch는 선언을 둘러 쌉니다.

변수/개체가 코드 블록 내에서 선언 된 경우 {} 안에 있으면 변수/개체를 외부에서 사용할 수 없습니다. 당신이해야 ...

귀하의 경우에는 시도하십시오.

2

이것은 가변 범위 지정과 관련이 있습니다. airplanesFile은 try 블록의 중괄호 안에 선언됩니다. 컴파일러가 try 블록의 닫는 중괄호를 치면 범위를 벗어납니다.

try 문 앞에 RandomAccessFile airplanesFile = null;을 선언하고 RandomAccessFile airplanesFile = new RandomAccessFile("airplanesFile.ran", "rw"); 에서 airplanesFile = new RandomAccessFile("airplanesFile.ran", "rw");으로 변경하면 문제가 없어집니다.

+0

바보 나 ... 나는 그 블록이 범위를 벗어나려고 잊어 ... 야신은 또한 IOException를 던질 수 있기 때문에 try 블록에 사용해 writeUTF 메소드 호출을 배치에 대한 좋은 점을 가지고 . 응답 속도, 수량 및 품질에 놀라움을 금치 못합니다. 나는 확실히 머물러 있습니다 :-) 고마워요 !!! – mg11

1

airplanesFile은 try 블록에서만 유효하기 때문에. 이 시도 :

public static void main(String[] args) 
{ 
    RandomAccessFile airplanesFile = null; 

    try 
    { 
     airplanesFile = new RandomAccessFile("airplanesFile.ran", "rw"); 
    } 
    catch (FileNotFoundException fnfe) 
    { 
     fnfe.printStackTrace(); 
    } 

    try { 
     airplanesFile.writeUTF("Test"); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 
관련 문제