数独アプリの 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));
}