Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从静态上下文引用二维数组?_Java_Arrays_Static_Definition - Fatal编程技术网

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填充值),无论出于什么原因,在声明过程中,你都可以使用静态块。是的,它被用作游戏板,所以我想最好是静态访问。将来,请用文字突出显示错误消息指示的行。这将使我们更容易了解这个问题。