尝试在java中设置double数组时出现NullPointerException

时间:2011-09-29 14:42:03

标签: java arrays multidimensional-array compiler-errors nullpointerexception

这是我认为的相关代码

class Sudoku {
    int[][] grid;     

    void generateSudokuFromInput()
    {

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

    void solveIt() {

      generateSudokuFromInput(); 

    }

}

继续获取NullPointer错误

4 个答案:

答案 0 :(得分:3)

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

E.g

grid = new int [3][];

这很好用。

答案 1 :(得分:2)

作为稍后声明数组大小的替代方法(如其他答案中所述),您还可以在声明数组时初始化数组:

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();
    }
}

答案 2 :(得分:1)

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

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

grid=new int[3][3];

要了解有关数组的更多信息,请参阅this文档。

答案 3 :(得分:1)

您需要提供第一维的尺寸:

grid = new int[3][];

否则,您如何期待第二个维度的运作? 二维数组[i] [j]基本上意味着“我的数组有i个数组,每个数组都有j值”。如果没有我,那就没有任何意义。