0

数独アプリの gui クラスが 1431 行目で "Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException" という null 例外をスローします。

    private String click(int x, int y) {
        String dialog = null;
        if (5==5/*sudoku1.grid[x][y].isEditable()==true*/)     {
            dialog = JOptionPane.showInputDialog("Enter Input:");
            int input = Integer.parseInt(dialog);                
1431:       sudoku1.grid[x][y].setValue(input);


        }
        else    {
            //JOptionPane.showMessageDialog(...);
        }
    return dialog;
    }

クラス オブジェクト sudoku1 の開始時に次のように宣言されます。

    public class ClassicGUI extends javax.swing.JFrame {
private boolean finished;
Sudoku sudoku1;
private final int size = 9;

そしてメインメソッドrun()で作成されました:

    public void run() {
    new ClassicGUI().setVisible(true);
    System.out.println("Testing GUI...");
    sudoku1 = new Sudoku(size);
    sudoku1.makeGrid(size);
    }

grid オブジェクトは Cell 型の 2 次元配列です。

  public void makeGrid(int size) {
      this.lines=size;
      grid = new Cell[lines][lines];
      for(int i=0;i<size;i++)
                for(int j=0;j<size;j++)    {
                    grid[i][j] = new Cell();
                    grid[i][j].setValue(0);
                }
      }

したがって、grid[x][y] にアクセスするための適切な方法が記載されています。また、配列内のオブジェクトは makeGrid() メソッドで初期化されます。Null 例外エラーが発生する理由???

PS最初のifは、同じ例外があったためコメントされています:-S ... xとyは0〜8の範囲の座標であり、以下に示すようにクリックメソッドの引数です

private void jLabel28MouseClicked(java.awt.event.MouseEvent evt)   {                                      
    jLabel28.setText(click(3, 0));
}
4

1 に答える 1