2013-04-25 2 views
0

При компиляции этого статического метода возникает ошибка, из-за которой переменная int array, 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 ............. если вы хотите вернуть координату методом ur, пожалуйста, объявите выше цикла while ... – hayat

ответ

1

Это потому, что массив coord является локальным по отношению к петле while. И поэтому его не видно вне его сферы. Переместите объявление 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!! 
} 

Теперь в вашем случае,

  • Обратите внимание, где вы определили Coors, и в том, что все места, которые вы используете его.
  • Попробуйте определить, где вы должны определить coors переменная.
Смежные вопросы