Bonsoir,
Même problème que dans le poste précédent : il faut donc redéfinir la méthode toString ? Mais dans ce cas comment appellez les éléments de la liste pour le print ?
J'ai essayé un peu de tout : une boucle, un iterator, deepToString... Je commence vraiment à m'y perdre, il est temps de réquérir un peu d'aide.
J'ai deux listes : "all" et "voisines", j'ai des System.out.println un peu dans toutes les méthodes qui ne fonctionnent donc pas avec celles-ci. Merci de m'éclairer..
et voici le code :
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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149 //import java.lang.reflect.Array; import java.util.ArrayList; import java.util.Arrays; import java.util.List; //Création de la classe public class Parcelles { //Création des attributs en private -> encapsulation private static String numParcelle; private String occSolete; private String occSolhiver; private static ArrayList<Parcelles>voisines = new ArrayList<>(); private static ArrayList<Parcelles>all = new ArrayList<>(); //private int[] voisines = new int[5]; //Création du constructeur avec paramètres public Parcelles(String pnumero, String pcultureEte, String pcultureHiver){ System.out.println("Création d'une parcelle"); numParcelle = pnumero; occSolete = pcultureEte; occSolhiver= pcultureHiver; } //Accesseur public String getnumParcelle() { return numParcelle; } public String getoccSolete() { return occSolete; } public String getoccSolhiver() { return occSolhiver; } public ArrayList<Parcelles> getvoisines() { return voisines; } public ArrayList<Parcelles> getall() { return all; } //Mutateur public void setnumParcelle (String pnumero) { numParcelle=pnumero; } public void setoccSolHiver (String pcultureHiver) { occSolhiver=pcultureHiver; } public void setoccSolete (String pcultureEte) { occSolete=pcultureEte; } //Création des méthodes public //Création de voisins public static List<Parcelles> addVoisine(Parcelles Parcelles) { voisines.add(Parcelles); System.out.println("Création d'un voisin de la parcelle " + numParcelle); System.out.println(Parcelles.getvoisines()); return voisines; } //Liste de toutes les parcelles public static List<Parcelles> addParcellesToAll(Parcelles Parcelles) { all.add(Parcelles); System.out.println("Ajout à la liste"); /*for(int i = 0; i < all.size(); i++){ System.out.println("Les parcelles existantes sont "); //System.out.println(Arrays.deepToString(all.get(i))); //checker la correction System.out.println(Parcelles.all); System.out.println(all); }*/ return all; // Inutile mais le void ne passe pas } //Test de voisinage public boolean estVoisineDe(Parcelles Parcelles) { System.out.println("Les parcelles sont-elles voisines ?"); System.out.println(voisines.contains(Parcelles)); return voisines.contains(Parcelles); } //1ère règle d'incompatibilité : le voisinage public static boolean incompUn(Parcelles Parcelles) { //Nom d'objet suivi du nom de classe?? for(int i = 0; i < voisines.size(); i++){ if (voisines.get(i).occSolete=="colza"){ if (Parcelles.occSolete == "ble"){ //this.occSol devrait faire référence à l'occSol mais de la Parcelle issues de l'appel System.out.println("Les parcelles " + voisines.get(i) + " et " + numParcelle + " présentent un incompatibilité de type route"); //System.out.println(false); //de cette fonction c'est à dire p1 pour : p1.estVoisineDe(p2) (appel de la méthode dans le main) } } if (voisines.get(i).occSolete=="ble"){ if (Parcelles.occSolete == "colza"){ //this.occSol devrait faire référence à l'occSol mais de la Parcelle issues de l'appel System.out.println("Les parcelles " + voisines.get(i) + " et " + numParcelle + " présentent un incompatibilité de type route"); //System.out.println(false); //de cette fonction c'est à dire p1 pour : p1.estVoisineDe(p2) (appel de la méthode dans le main) } } } return false; } //2eme règle d'incompatibilité : les sucessions culturales public static boolean incompDeux (Parcelles Parcelles){ {if ((Parcelles.occSolete=="colza") && (Parcelles.occSolhiver=="prairie")) System.out.println("La parcelle " + numParcelle + " présentent une incompatibilité de type sucession culturales" ); //System.out.println(false); if ((Parcelles.occSolete=="colza") && (Parcelles.occSolhiver=="route")) System.out.println("La parcelle " + numParcelle + " présentent une incompatibilité de type sucession culturales" ); //System.out.println(false); return false;} } //Combinaison des règles entre toutes les parcelles à compléter... public static void testGenerique (Parcelles Parcelles){ for (int i = 0; i < all.size(); i++){ Parcelles A = all.get(i); for (int j = 0; j < all.size(); j++){ Parcelles B = all.get(j); incompUn(B); if (incompUn(B)==false) System.out.println(B + " présente une incompatibilité de voisinage "); incompDeux(B); if (incompUn(B)==false) System.out.println(B + " présente une incompatibilité de sucession culturale "); } } } }
Partager