Every time I call myGrid in the generateBoard method, I get the error:
non-static variable
myGridcannot be referenced from static context
To my understanding, this shouldn't happen, because I've set the array to be public and should be able to be accessed from any other class. So have I set up the array incorrectly?
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( "|" );
}
}
}
}
}
myGridvariable is an instance variable rather than a class variable. That is, it can only be accessed by an instance ofZombies. On the other hand, the static methods (and class, a.k.a. static, variables) belong to a class, which are shared, in this case, among allZombiesinstances.Either pass
myGrid(int[][]) as parameter to each of these static methods, or declare it asstatic.