2013-04-25 2 views
0

이 정적 메서드는 컴파일 할 때 int 배열 변수 인 coord를 찾을 수 없다는 오류가 발생합니다. 메서드 내에서 선언했는데 int [] 형식이므로 작동하지 않는 이유를 알 수 없습니다. 정적 인 방법과 관련이 있다는 생각이 들지만, 정적으로 변경하는 방법이 먼저 그 방법을 작동시키는 유일한 방법이었습니다.java에서 기호 오류를 찾을 수 없습니다. beginner

나는이 주제에 대해 알아낼 수있는 모든 것이 훨씬 복잡한 코딩 문제 였을 때, 특히 나에게 정말 간단하다고 느낍니다.

이 방법이 도움이 될 경우이 메서드는 이동 위치의 (x, y) 좌표를 반환한다고 가정합니다. 아마도 코드를 올바르게 입력하지 않으셔서 죄송합니다. 이 일을 처음으로. 어떤 도움

코드에 미리 감사드립니다 :

public static int[] getMove(String player) 
{ 
    boolean done = false; 
    while(!done) 
    { 
     Scanner in = new Scanner(System.in); 
     System.out.println("Input row for " + player); 
     int x = in.nextInt() - 1; 
     System.out.println("Input column for " + player); 
     int y = in.nextInt() - 1; 
     int[] coord = {x,y}; 
     if(getLoc(coord[0], coord[1]).equals("x") || getLoc(coord[0], coord[1]).equals("o") || coord[0] < 0 || coord[0] > ROWS || coord[1] < 0 || coord[1] > COLUMNS) 

     { 
      System.out.println("Invalid coordinates... please retry"); 
     } 
     else 
     { 
      done = true; 
     } 
    } 
    return coord; 
} 
+0

while 루프에서 coord가 선언되었습니다 ............. ur 메서드로 coord를 반환하려면 while 루프 위에 선언하십시오. – hayat

답변

1

배열 coordwhile 루프 지역이기 때문이다. 따라서 그것의 범위 밖에서 보이지 않습니다. coord의 선언을 while 외부로 이동하면 제대로 작동합니다. 당신이 누락 무엇

int[] coord = new int[2]; 
while(!done){ 
    ... 
    ... 
    coord[0] = x; 
    coord[1] = y; 
    ... 
} 
+0

감사합니다! 나는 그게 뭔가 간단 할 줄 알았어. – user2318198

2

변수의 범위입니다. 부모 블록에서 선언 된 변수는 자식 블록에서 액세스 할 수 있지만 다른 방법으로는 사용할 수 없습니다. 귀하의 경우 이제

public void someMethod() 
{ 
int x=1; 

while(x<10) 
{ 
x++; //x is accessible here, as it is defined in parent block. 
int j = 0; //This variable is local to while loop and will cause error if used inside method 
j++; 
} 
System.out.println(j);// The outer block does not know about the variable j!! 
} 

, 당신이 그것을 사용하고있는 모든 장소는 쿠어스을 정의하고있는 한

  • 알 수 있습니다.
  • 어디에서 변수를 정의해야합니까? 변수를 정의하십시오.