我的数独应用程序的 gui 类在第 1431 行抛出空异常“线程“AWT-EventQueue-0”java.lang.NullPointerException 中的异常”
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 类型的二维数组:
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() 方法中初始化。为什么空异常错误???
PS第一个if被评论是因为我在那里有同样的例外:-S ... x和y是0-8范围内的坐标并且是click方法的参数,如下所示
private void jLabel28MouseClicked(java.awt.event.MouseEvent evt) {
jLabel28.setText(click(3, 0));
}