Print un élément d'une ArrayList
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:
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 ");
}
}
}
} |