编译时,这个静态方法会出现无法找到int数组变量coord的错误。我在方法中声明它并且它是int []类型,我无法弄清楚为什么它不起作用。我有一种感觉,它与方法是静态的,但将其更改为静态是我发现使该方法首先工作的唯一方法。
我觉得这对任何人来说都可能非常简单,但是我特别是当我在这个主题上找到的所有内容都是更复杂的编码问题时。
如果这有帮助..这个方法应该返回移动位置的(x,y)坐标。很抱歉可能没有正确输入代码。第一次这样做。在此先感谢您的任何帮助
CODE:
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 :(得分: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!!
}
现在就在你的情况下,
答案 1 :(得分:1)
这是因为数组coord
是while
循环的本地数组。因此在其范围之外不可见。将coord
的声明移到while
之外,它应该有效。
int[] coord = new int[2];
while(!done){
...
...
coord[0] = x;
coord[1] = y;
...
}