Java 如何从静态上下文引用二维数组?
每次在Java 如何从静态上下文引用二维数组?,java,arrays,static,definition,Java,Arrays,Static,Definition,每次在generateBoard方法中调用myGrid,我都会得到错误: 无法从静态上下文引用非静态变量myGrid 据我所知,这不应该发生,因为我已经将数组设置为公共的,并且应该能够从任何其他类访问。那么,我是否错误地设置了阵列 import java.util.Random; public class Zombies { private int Level = 1; private int MoveNo = 0; public int[][] myGrid = ne
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( "|" );
}
}
}
}
}
import java.util.Random;
公共类僵尸{
私用整数级=1;
私有int MoveNo=0;
公共int[][]myGrid=新int[12][12];
公共静态无效生成板(){
Random rand=新的Random();
int i,j;
对于(i=0;i<12;i++){
对于(j=0;j<12;j++){
如果(i==6&&j==6){
myGrid[i][j]=“P”;
}
if(rand.nextInt(4)==0){
myGrid[i][j]=“i”;
}
myGrid[i][j]='x';
}
}
}
公共静态字符串打印板(){
int i,j;
对于(i=0;i<12;i++){
对于(j=0;j<12;j++){
如果(j==0){
系统输出打印(“|”);
}
System.out.print(myGrid[i][j]+“”);
如果(j==12){
系统输出打印(“|”);
}
}
}
}
}
myGrid
变量是实例变量而不是类变量。也就是说,它只能由僵尸的实例访问。另一方面,静态方法(和类,也称为静态变量)属于一个类,在本例中,在所有僵尸
实例之间共享该类
要么将myGrid
(int[][]
)作为参数传递给每个静态方法,要么将其声明为static
如何将数组声明为静态?只是“publicstaticint[][]myGrid=newint[12][12];”?是的,正如你所写。但是,同时请记住,根据您的设计,可以将数组作为参数传递给这些方法,也可以将2D数组声明为类变量(静态)。如果你想实例化静态数组(也就是说,在静态方法开始工作之前,也许你想用10填充值),无论出于什么原因,在声明过程中,你都可以使用静态块。是的,它被用作游戏板,所以我想最好是静态访问。将来,请用文字突出显示错误消息指示的行。这将使我们更容易了解这个问题。