Java 我不知道这是如何返回nullPointerError的
我正在这里使用这个类,并试图对其调用.get方法。这看起来很简单,但无论我做什么更改,我都会得到一个nullPointerException:Java 我不知道这是如何返回nullPointerError的,java,multidimensional-array,Java,Multidimensional Array,我正在这里使用这个类,并试图对其调用.get方法。这看起来很简单,但无论我做什么更改,我都会得到一个nullPointerException: value = gameBoard[row-1][column-1]; 看起来它可能是一个off by one错误,但我几乎可以肯定数组的大小是正确的,并且调用它的主方法中的.get方法以一行1和一列1开始,所以我看不出有什么问题 public class Simple2DArray implements Simple2DInterface { pub
value = gameBoard[row-1][column-1];
看起来它可能是一个off by one错误,但我几乎可以肯定数组的大小是正确的,并且调用它的主方法中的.get方法以一行1和一列1开始,所以我看不出有什么问题
public class Simple2DArray implements Simple2DInterface
{
public int[][] gameBoard;
public Simple2DArray(int aRow, int aColumn)
{
int[][] gameBoard = new int[aRow][aColumn];
for(int i=0;i<aRow;i++)
{
for(int j=0;j<aColumn;j++)
{
gameBoard[i][j] = -1;
}
}
}
public int getNumberOfRows()
{
int rows;
rows = gameBoard.length;
return rows;
}
public int getNumberOfColumns()
{
int columns;
columns = gameBoard[0].length;
return columns;
}
public void clear()
{
for(int i=0;i<gameBoard.length;i++)
{
for(int j=0;j<gameBoard[i].length;i++)
{
gameBoard[i][j] = -1;
}
}
}
public void setToOne(int row, int column)
{
gameBoard[row+1][column+1] = 1;
}
public void setToZero(int row, int column)
{
gameBoard[row+1][column+1] = 0;
}
public void flip(int row, int column)
{
if(gameBoard[row-1][column-1]==1)
{
gameBoard[row-1][column-1]=0;
}
if(gameBoard[row-1][column-1]==0)
{
gameBoard[row-1][column-1]=1;
}
}
public int get(int row, int column)
{
int value;
value = gameBoard[row-1][column-1];
return value;
}
}
编写时,您正在构造函数中声明一个新变量
int[][] gameBoard = new int[aRow][aColumn];
删除声明int[]],它将引用实例变量:
gameBoard = new int[aRow][aColumn];
此外,clear方法中的内部循环必须有j++。它可能不相关,但为什么SetToOne/SetToZero方法使用行+1和列+1?它们实际上应该是行-1和列-1。这是因为它被用于一个游戏板,它从1,1开始,而阵列显然从0,0开始。谢谢!我知道这一定很简单,只是没意识到我不能申报两次