每次在generateBoard
方法中调用myGrid
时,我都会得到错误:
非静态变量
myGrid
不能从静态上下文中引用
据我所知,这不应该发生,因为我已经将数组设置为公共的,并且应该能够从任何其他类访问。那么,我是否错误地设置了数组?
import java.util.Random;
public class Zombies {
private int Level = 1;
private int MoveNo = 0;
public int[][] myGrid = new int[12][12];
public static void generateBoard() {
Random rand = new Random();
int i, j;
for (i = 0; i < 12; i++) {
for (j = 0; j < 12; j++) {
if ( i == 6 && j == 6) {
myGrid[i][j] = 'P';
}
if (rand.nextInt(4) == 0) {
myGrid[i][j] = 'I';
}
myGrid[i][j] = 'x';
}
}
}
public static String printBoard() {
int i, j;
for (i = 0; i < 12; i++) {
for (j = 0; j < 12; j++) {
if (j == 0) {
System.out.print( "| " );
}
System.out.print( myGrid[i][j] + " " );
if (j == 12) {
System.out.print( "|" );
}
}
}
}
}
myGrid
变量是实例变量,而不是类变量。也就是说,它只能由Zombies
的一个实例访问。另一方面,静态方法(和类,也称为静态变量)属于一个类,在本例中,这些类在所有Zombies
实例之间共享。
将myGrid
(int[][]
)作为参数传递给这些静态方法中的每一个,或者将其声明为static
。