Pb : boucle récursive

teslasghost Messages postés 8 Date d'inscription jeudi 5 juin 2003 Statut Membre Dernière intervention 15 décembre 2005 - 26 oct. 2005 à 19:21
Anthed Messages postés 152 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 17 janvier 2014 - 16 nov. 2005 à 21:29
Bonjour,

Je souhaite faire une boucle récursive, modifiant une chaine de caractère, au fur et à mesure que progresse un index, et l'affichant dans ma page web.
Comme j'ai besoin de ré-appeler ma fonction, je suis obligé de créer une fonctio, et donc de la déclarer dans un bloc <%!
Mais visiblement, le out.println() n'est pas autorisé entre ces balises, et System.out.println() envoie le résultat dans la console, ce qui n'est pas très lisible sur la page web ... :)
Voici mon problème dans une version simplifiée

<%
String s="JHGJHGJHG";
genere(s,0); %>
<%!
public void genere(String seq,int index)
{
System.out.println(seq);
if(index<seq.length())
{
seq=seq.substring(index,seq.length());
genere(seq,index+1);
}
}
%>

Ce que je souhaite, c'est que les différentes chaines de caractères soient affichées dans la page web.
Je sais qu'il serait possible de concaténer seq à lui-même, séparé par une balise
, et que la fonction genere retourne à la fin une chaine de caractère des différents résultats concaténés de la forme "JHGJHGJHG
JHGJHGJHG
HGJHGJHG
JHGJHG
JHG". Cette solution ne m'intéresse pas, car ma condition d'arrêt est basée sur la taille de la chaîne de caractère...
Je pourrais utiliser une liste de String, la remplir au fur et à mesure, puis l'afficher après dans une scriptlett, c'est ce que je ferais probablement si je ne trouve pas de solutions (mais bon, une fois je remplis la liste, une autre fois, je la reparcours, sachant que dans l'application que je veux réaliser, j'ai 2^n résultats, si je peux éviter ...)

Donc pour résumer, est-ce que je peux fair eune sortie vers la page web, qd je suis entre des balises de déclaration <%! %> ou alors voyez vous une solution palliative :)

Merci d'avance

Olivier

2 réponses

meyfab Messages postés 17 Date d'inscription mercredi 1 juin 2005 Statut Membre Dernière intervention 28 octobre 2005
27 oct. 2005 à 14:43
Simple.

Tu modifie le profile de ta méthode en :

public void genere (PrintWriter out, String seq, int index) {

..........................

}



Et tu l'appels comme suit :

genere(out,s,0);



Tu peux utiliser un JspWriter en lieu et place d'un PrintWritter, pour
"coller" aux classes utilisées lors de la transformation de la JSP en
Servlet.
0
Anthed Messages postés 152 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 17 janvier 2014 3
16 nov. 2005 à 21:29
Pour ce genre de manipulation, rien ne vaut l'utilisation de javascript ...
0
Rejoignez-nous