Le 11/04/2012 17:03, Loic GASCHE a écrit :
Bonjour,
J'ai rajouté un petit bout de code à notre script de calcul de F dans SiMatrix pour que le calcul de F se fasse bien uniquement sur les F jugés "représentatifs" par le CIEM et pas les autres :
if (pop.getName() == "Sole7D"){ List<PopulationGroup> groups3a8 = groups.subList(3, 9); List<PopulationGroup> groupesRepresentatifs = new ArrayList(groups3a8); log.info("groupesRepresentatifs = " + groupesRepresentatifs + "Year=" + step.getYear()); } else if (pop.getName() == "Plaice7D"){ List<PopulationGroup> groups3a6 = groups.subList(3, 7); List<PopulationGroup> groupesRepresentatifs = new ArrayList(groups3a6); log.info("groupesRepresentatifs = " + groupesRepresentatifs + "Year=" + step.getYear()); }
Le but est de créer une liste de groupes par pop qui contienne uniquement les groupes représentatifs, afin par la suite de boucler sur ces groupes uniquement.
Déjà j'ai quelques doutes sur les conditions dans mes "if", mais il n'y a que comme ça que j'ai réussi à avoir un code qui se compile. Par exemple je doute sur l'utilité du "pop.getName()" alors que "pop" tout seul sort déjà Sole7D ou Plaice7D... Mais alors il faut peut-être modifier la manière d'écrire la condition ? C'est ca, mais plutôt : if (pop.getName().equals("Sole7D")) {
Sans les conditions, les subList me sortent bien une liste contenant uniquement les groupes que je souhaite conserver.
Mais malgré tout quand je demande de boucler sur "groupesRepresentatifs" au lieu de "groups" (tous les groupes) : for (PopulationGroup group : groupesRepresentatifs) {
j'ai le message d'erreur suivant qui me dit que groupesRepresentatifs n'existe pas :
C:\Users\lgasche\isis-fish-4\isis-database\scripts\SiMatrix.java:1637: cannot find symbol symbol : variable groupesRepresentatifs location: class scripts.SiMatrix for (PopulationGroup group : groupesRepresentatifs) { //groupesRepresentatifs ^
Voilà, je ne vois pas trop d'où vient le soucis... Help ? Tu as du mettre ta boucle for apres le if ? Si c'est le cas, List<PopulationGroup> groupesRepresentatifs n'existe que dans le block qui le déclare.
Il faut sortir l'instance de la liste: List<PopulationGroup> groupesRepresentatifs; if () { groupesRepresentatifs = ... } else { groupesRepresentatifs = ... } pour qu'elle continue d'exister après le if -- Éric Chatellier <chatellier@codelutin.com> Tel: 02.40.50.29.28 http://www.codelutin.com