Salut à tous,
Je débute en Java j'ai un soucis assez bizzare j'ai un tableau d'objet à deux dimensions en tant que données membre .
Une fois crée par le constructeur donc toute les positions initialisé j'utilise une fonction et la dès que je doit utiliser une fonction d'un des objets du tableau j'ai l'erreur nullpointer pourtant tout a bien été initialisé.
Voila la bête :
et le main :
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 public Main(int nbRow, int nbColumn) { NB_ROW = nbRow; NB_COLUMN = nbColumn; Person World[][] = new Person[nbRow][nbColumn]; for (int Row = 0; Row < NB_ROW; Row++) { for (int Column = 0; Column < NB_COLUMN; Column++) { Random rand = new Random(); int i = rand.nextInt(4) + 1; switch (i) { case 1: World[Row][Column] = new Duck(); break; case 2: World[Row][Column] = new Chicken(); break; case 3: World[Row][Column] = new Pig(); break; case 4: World[Row][Column] = new Human(); break; } World[Row][Column].affichType(); System.out .print(' ' + World[Row][Column].getStatePrint() + '\t'); } System.out.print('\n'); } System.out.print("\n"); } public void contact() { // Tentative de contact des personnes contaminé for (int Row = 0; Row < NB_ROW; Row++) { for (int Column = 0; Column < NB_COLUMN; Column++) { /* * Teste si la personne est contaminé sinon aucun interêt de * rentrer en contact avec les autres */ if (World[Row][Column].getState() == Person.State.Contagious .toString()) { // Selection de l'ensemble de ses 8 voisins for (int i = -1; i <= 1; i++) { for (int j = -1; j <= 1; j++) { // Vérification des cas particuliers (effets // de bords) if ((i == 0 && j == 0) // Si i = j = 0 alors // c'est la case // elle même || ((i + Row) < 0) || ((j + Column) < 0) || ((i + Row) == NB_ROW) // si dépasse les limites de ligne du tableau || ((j + Column) == NB_COLUMN)) // si dépasse les limites de colonne continue; else World[Row][Column] .contact(World[Row + i][Column + j]); } } } } } } // contact()
Si quelqu'un peut m'aider a comprendre pourquoi j'ai cette erreur ce serais vraiment d'une grande aide je suis totalement bloqué
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 public static void main(String[] args) { // Affichage de la légende System.out.print("Légende de l'état de santé de chacun :\n"); System.out .print("Healthy --> O\tSick --> *\tContagious --> **\tRecovering -->OO\tDead --> ***\n\n"); // Creation de la Map int read = 0; System.out.print("Veuillez saisir le nombre de ligne a générer : "); Scanner sc = new Scanner(System.in); try { read = (int) sc.nextInt(); } catch (InputMismatchException e) { System.out .println("\nInstanciation avec un nombre non valide\nLa valeur par défaut est donc affecté --> 10\n\n"); read = 10; sc.nextLine(); // vide le buffer Scanner pour la prochaine // utilisation } final int NB_ROW = read; System.out.print("Veuillez saisir le nombre de colonne a générer : "); try { read = (int) sc.nextInt(); } catch (InputMismatchException e) { System.out .println("\nInstanciation avec un nombre non valide\nLa valeur par défaut est donc affecté --> 10\n\n"); sc.nextLine(); // vide le buffer Scanner pour la prochaine // utilisation read = 10; } final int NB_COLUMN = read; Main world = new Main(NB_ROW, NB_COLUMN); world.contact(); } // main()
Partager