繁体   English   中英

尝试在Java中设置双精度数组时发生NullPointerException

[英]NullPointerException when trying to set a double array in java

这是我认为的相关代码

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个值”。 如果没有我,那什么也没有。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM