在java中尝试设置双数组时抛出NullPointerException



我认为这是相关的代码

class Sudoku {
    int[][] grid;     
    void generateSudokuFromInput()
    {
      grid = new int[][]   <--- java.lang.NullPointerException at Sudoku.generateSudokuFromInput(Sudoku.java:309)
      {
         (...)
      }
    }
    void solveIt() {
      generateSudokuFromInput(); 
    }
}

一直得到NullPointer错误

在声明多维数组时,必须指定除最后一个维度外的所有维度

grid = new int [3][];

作为稍后声明数组大小的另一种选择(如其他答案所述),您也可以在声明数组时初始化它:

class Sudoku {
    int[][] grid = {
        {0, 0, 0, 0, 0, 0, 0, 0, 0},
        {0, 0, 0, 0, 0, 0, 0, 0, 0},
        {0, 0, 0, 0, 0, 0, 0, 0, 0},
        {0, 0, 0, 0, 0, 0, 0, 0, 0},
        {0, 0, 0, 0, 0, 0, 0, 0, 0},
        {0, 0, 0, 0, 0, 0, 0, 0, 0},
        {0, 0, 0, 0, 0, 0, 0, 0, 0},
        {0, 0, 0, 0, 0, 0, 0, 0, 0},
        {0, 0, 0, 0, 0, 0, 0, 0, 0}
    };
    void generateSudokuFromInput() {
        // just set the values on grid, e.g. grid[0][0] = 9
    }
    void solveIt() {
        generateSudokuFromInput();
    }
}

创建数组必须指定下标值。

grid = new int[2][];
grid[0]=new int[2];
grid[1]=new int[5];

grid=new int[3][3];

要了解关于数组的更多信息,请参阅本文档

您需要提供第一个维度的大小:

grid = new int[3][];

否则,你期望第二次元如何工作?二维数组[i][j]基本上意味着"我的数组有i个数组,每个数组有j个值"。

相关内容

  • 没有找到相关文章

最新更新