2010-04-17 3 views
0

나는 필드의 다음과 같은 선언 클래스가 있습니다"개인 정적"이 메소드에서 보이지 않는 이유는 무엇입니까?

public class Game { 
private static String outputFileName; 
.... 
} 

나는 클래스의 main 방법에 outputFileName의 값을 설정합니다.

outputFileName을 사용하는 클래스에는 write 메서드가 있습니다. main 값을 outputFileName으로 설정 한 후에 항상 write이라고 부릅니다. 그러나 write은 여전히 ​​outputFileName의 값을 볼 수 없습니다. 그것은 null과 같습니다.

누구나 할 수 있겠습니까? 제가 잘못하고있는 것을 말해주십시오. 메인에서

:이 줄은 나에게 파일의 이름을 출력

String outputFileName = userName + "_" + year + "_" + month + "_" + day + "_" + hour + "_" + minute + "_" + second + "_" + millis + ".txt"; 
    f=new File(outputFileName); 
     if(!f.exists()){ 
     try { 
      f.createNewFile(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    }    
    System.out.println("IN THE MAIN!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); 
    System.out.println("------>" + outputFileName + "<------"); 

내가 더 많은 코드를 게시 요청으로

을 추가했습니다.

public static void write(String output) { 
    // Open a file for appending. 
    System.out.println("==========>" + outputFileName + "<============"); 
     ...... 
} 

을 그리고 널 (null) 출력 다음 write에서보다

나는 있습니다. 로컬 변수 또는 main 코드의 첫 번째 줄에 같은 이름

+0

잘 작동해야합니다. 더 많은 코드를 게시 할 수 있습니까? – oedo

+1

전체 코드를 게시하는 것이 더 쉬울 것이라고 생각합니다. 문제를 나타내는 최소 파일로 잘라냅니다. –

답변

3

은 '

String outputFileName = ... 

요구는 당신에게 다른

outputFileName = ... 

것 같다 outputFileName이라는 새로운 로컬, var를 만들고, private static은 손대지 않습니다.

+0

당신이 옳습니다. 'main' 메쏘드에서 outputFileName 전에'String'을 제거해야했습니다. 감사! – Roman

3

와 매개 변수를 가지고있는 것처럼