如何从静态上下文引用2D数组?

时间:2013-11-30 23:57:29

标签: java arrays static definition

每次我在myGrid方法中调用generateBoard时,都会收到错误消息:

  无法从静态上下文

引用

非静态变量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( "|" );
                }
            }
        }
    }
}

1 个答案:

答案 0 :(得分:3)

myGrid变量是实例变量而不是类变量。也就是说,它只能由Zombies的实例访问。另一方面,静态方法(和类,a.k.a。静态,变量)属于一个类,在这种情况下,它们在所有Zombies个实例之间共享。

myGridint[][])作为参数传递给每个静态方法,或将其声明为static