Problème de return [Résolu/Fermé]

Signaler
Messages postés
10
Date d'inscription
dimanche 30 septembre 2012
Statut
Membre
Dernière intervention
27 octobre 2014
-
Messages postés
10
Date d'inscription
dimanche 30 septembre 2012
Statut
Membre
Dernière intervention
27 octobre 2014
-
Bonjour,

j'essaye de créer une fonction qui permet de prendre aléatoirement un élément dans une liste de type ArrayList, met cet élément dans une String et le supprime aussitôt de la liste, et ce répété le nombre de fois choisi. Je sais pas si j'ai été très clair ^^

Voici le code :

static String f2(int nbSuppr){

ArrayList<String> Liste = new ArrayList<String>();

Liste.add("x");
Liste.add("y");
Liste.add("z");
Liste.add("a");
Liste.add("b");

int i=0;
int x=4;
do{
int k = (int) (Math.random()*x);
String res = Liste.get(k);
Liste.remove(k);
String res2 = (res + " ");
i++;
x--;
}while(i!=nbSuppr);
return res2;
}


Le problème est qu'il me dit que res2 n'est pas défini...

Merci de me dire ce qui ne va pas :)

1 réponse

Messages postés
1207
Date d'inscription
vendredi 17 juin 2011
Statut
Membre
Dernière intervention
15 novembre 2018
159
Salut,

Le problème c'est que tu définis ta variable res2 dans ta boucle while. C'est donc une variable locale à ta boucle. Si tu veux l'utiliser dans la boucle et en dehors, il faut que tu la déclare avant, et tu lui donne sa valeure ensuite. Du genre :

static String f2(int nbSuppr){ 

ArrayList<String> Liste = new ArrayList<String>();
String res2 = "";

Liste.add("x");
Liste.add("y");
Liste.add("z");
Liste.add("a");
Liste.add("b");

int i=0;
int x=4;
do{
int k = (int) (Math.random()*x);
String res = Liste.get(k);
Liste.remove(k);
res2 = (res + " ");
i++;
x--;
}while(i!=nbSuppr);

return res2;
}


Il n'y aurait aucun pb si il n'y avait pas le return res2
Messages postés
10
Date d'inscription
dimanche 30 septembre 2012
Statut
Membre
Dernière intervention
27 octobre 2014

D'accooooord !

Super merci ;)