J'ai une classe, "Tetris", dans laquelle une des variables d'instance est "tableau". "board" est un tableau 2D d'objets Color. Lors de la création d'un objet tetris, j'appelle une méthode qui définit les dimensions de la carte, puis définit tous les objets Color comme valeur par défaut, c'est-à-dire Color.blue.Exception de pointeur nul sur un tableau 2D (Java)
public Tetris(int rows, int cols) {
this.rows = rows;
this.cols = cols;
reset(rows, cols);
}
public void reset(int rows, int cols) {
Color[][] board = new Color[rows][cols];
for(int i = 0; i<this.rows; i++) {
for(int j = 0; j<this.cols; j++) {
board[i][j] = DEFAULT_COLOR; // Color.blue; //DEFAULT-COLOR
}
}
}
Malheureusement, quand je lance le code (qui n'a évidemment pas été écrit dans son intégralité) Je reçois une exception de pointeur nul sur la ligne:
board[i][j] = DEFAULT_COLOR; // Color.blue; //DEFAULT-COLOR.
Y at-il de toute évidence de mal à ce que je fais?
N'a rien à faire avec le NPE, mais dans la réinitialisation, vous devez soit passer en lignes/cols OU utiliser this.rows/this.cols, mais pas les deux. En outre, Color [] est créé localement et non retourné ou défini sur un champ d'instance. – Thilo
Avez-vous un membre de classe nommé board? Si tel est le cas, votre fonction de réinitialisation, comme Jon l'a mentionné, n'initialise pas ce membre puisque votre tableau de variables local remplace le membre de la classe, qui n'est jamais initialisé. – Ernelli