这是我的代码:
Piece grille[][] = new Piece[9][9];
grille[0][0] = new Piece(1,joueur1,0);
grille[8][0] = new Piece(1,joueur2,0);
grille[0][8] = new Piece(1,joueur2,0);
grille[8][8] = new Piece(1,joueur1,0);
grille[0][1] = new Piece(3,joueur2,1);
grille[1][0] = new Piece(3,joueur2,1);
grille[1][1] = new Piece(3,joueur2,1);
grille[7][0] = new Piece(3,joueur1,2);
grille[7][1] = new Piece(3,joueur1,2);
grille[8][1] = new Piece(3,joueur1,2);
grille[7][7] = new Piece(3,joueur2,3);
grille[7][8] = new Piece(3,joueur2,3);
grille[8][7] = new Piece(3,joueur2,3);
grille[0][7] = new Piece(3,joueur1,4);
grille[1][7] = new Piece(3,joueur1,4);
grille[1][8] = new Piece(3,joueur1,4);
grille[3][4] = new Piece(2,joueur1,0);
grille[5][4] = new Piece(2,joueur2,0);
for(int i=0; i<9; i++){
for(int j=0;j<9;j++){
if(grille[i][j].joueur == null)
grille[i][j] = new Piece(0, null,0); //0 correspond a case vide
}
}
我在Piece中的实例变量是:
public int type;
public Joueur joueur;
public int param;
似乎错误来自:grille[i][j].joueur == null
我收到此错误:
线程中的异常&#34; main&#34; Citadella的java.lang.NullPointerException。(Citadella.java:35)在Partie.main(Partie.java:8)
答案 0 :(得分:0)
代码的问题在于阵列中有空位。循环将进行盲调,grille[0][0].joule
然后grille[0][1].joule
然后grille[0][2]
。由于您没有指定grille[0][2]
,因此它为空。因此你的空指针异常。
答案 1 :(得分:0)
我认为您需要if grille[i][j] == null
而不是取消引用joueur。