Bonjour, j'ai un problème de compilation dans le code ci-dessous, à la ligne 21

Le message d'erreur est le suivant

" variable lists might not have been initialized"

Je ne comprends pas car je pense que la déclaration et l'initialization se font avec l'objet > ArrayList<Integer> liste; ?

Pouvez-vous m'aider?

Merci d'avance

**********************

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
import java.util.*;
public class Grille {
 
	int[][] tab1 = {{0,4,3,7,0,0,9,0,8},
	                {0,5,0,3,0,0,0,0,0}, 
	                {0,1,0,0,0,0,3,0,0},
	                {6,0,0,0,2,7,0,0,0}, 
	                {4,0,7,0,0,0,1,0,3},
	                {0,0,0,5,4,0,0,0,9},
	                {0,0,2,0,0,0,0,3,0},
	                {0,0,0,0,5,0,4,0,0}, 
	                {5,0,4,0,0,1,2,6,0}};
 
	public Grille(ArrayList<Integer> al) { // Constructeur qui utilise les valeurs d'une liste pour les mettre dans un tableau
 
		int nbcol = 9; // Initialisation du nombre de colonnes
		int nblig = 9; // Initialisation du nombre de lignes
 
		ArrayList<Integer> liste;
 
			if (liste.size() != nbcol * nblig) { // Condition qui permet de valider si le nombre de cases correspond à la taille de la grille
				System.out.println("Le nombre de données ne correspond pas à la taille de la grille");		
			}
 
			int ligne = 0;
			int colonne = 0;
 
			for(Integer e : al) { // Création d'une boucle pour copier 
 
				tab1 [ligne][colonne] = e;
				colonne++;
 
		  			 if(colonne >= nbcol) {
 
		        		colonne = 0;
 
						ligne++;
		    	}
		    }
	}
 
	public void grilleToArray(ArrayList<Integer>al){ // Méthode prenant une ArrayList en entrée et qui y affecte les valeurs du tableau
 
	 	for (int nblig = 0; nblig < tab1.length; nblig++) {
		 	for (int nbcol = 0; nbcol < tab1[nblig].length; nbcol++) { 
			 	al.add(tab1 [nblig][nbcol]);
 
			 }
 		}
	}
 
		public boolean estSurLigne(int valeur, int ligne) {	// Valide si la valeur est présente sur la ligne
			for (int i = 0; i < 9; i++) 
				if (tab1[ligne] [i] == valeur) {
						System.out.println("La valeur est déjà présente sur cette ligne");
						return true;
				}
				return false;		
		}
 
		public boolean estSurColonne(int valeur, int colonne) { // Valide si la valeur est présente sur la colonne			
			for (int j = 0; j < 9; j++) 
				if (tab1[colonne] [j] == valeur) {
						System.out.println("La valeur est déjà présente sur cette colonne");
						return true;
				}
			return false;				
		}
 
		public boolean estDansLeBloc(int valeur, int ligne, int colonne){ // Valide si la valeur est présente à l'intersection de la ligne et de la colonne
		if ( tab1[ligne][colonne] == valeur ){
			System.out.println("La valeur est déjà présente à l'intersection de cette ligne et de cette colonne");
				return true;
 			}
 
 		else {
 			return false; // La valeur se trouvant à l'intersection n'est pas "valeur"
			}
		}
 
	private static final String tiret = "------------------------\n"; // Création et affectation de la variable texte "tiret"
	public void imprimerGrille() { // Méthode destinée à imprimer le grille de jeu
			StringBuilder sb = new StringBuilder(); // Création de l'objet StringBuilder
				sb.append(tiret);
					for (int i = 0; i < tab1.length; i++) {
						if (i == 3 || i == 6 ) {
							sb.append(tiret);
						}
 
					sb.append("|");
					for (int j = 0; j < tab1[i].length; j += 3) {
						for (int kj = j; kj < j + 3; kj += 1) {
							if (tab1[i][kj] != 0)
								sb.append(tab1[i][kj]);
							else
								sb.append(" ");
								sb.append(" ");
							}
						sb.append("| ");
					}
				sb.append("\n");
			}
			System.out.println(sb);
			sb.append(tiret);
	}
}