簡體   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