Je trove une petite difficulte

thelover2fr Messages postés 7 Date d'inscription mercredi 2 avril 2003 Statut Membre Dernière intervention 20 octobre 2009 - 14 avril 2003 à 17:20
CoreBreaker Messages postés 540 Date d'inscription dimanche 23 mars 2003 Statut Membre Dernière intervention 5 octobre 2007 - 16 avril 2003 à 21:50
je suis entrain de faire mes premiers pas en java.
et je souhaite faire un petit editeur de textes.le probleme c'est que je n'arrive pas a developper une methode pour justifier le texte.
c'est a dire inserer des espaces entre les mots jusqu'a la fin de la ligne
merci pour l'aide

2 réponses

cs_dragon Messages postés 2336 Date d'inscription samedi 14 juillet 2001 Statut Membre Dernière intervention 5 mai 2009 6
14 avril 2003 à 17:28
si j'ai bien compris, c'est que le texte soit toujours de la même longueur.

je te suggére de faire une méthode qui trouve les sespace entre les mots, même s,il y a plusieurs espaces. puis avec une valeur temporaire, garder la string actuel puis ajouter un espaces à chaque endroit. si la chaine est rendu trop longue, afficher la valeur temporaire, sinon recommencer l'opération.

faudrasi aussi vérifier si la chaine est trop petite pour pas trop décaler les mots
0
CoreBreaker Messages postés 540 Date d'inscription dimanche 23 mars 2003 Statut Membre Dernière intervention 5 octobre 2007 1
16 avril 2003 à 21:50
utilisation:
obj.justifierLigne(ligne, 80); // 80 caractères par ligne par exemple

code:
public String justifierLigne(String ligneSaisie, int longueurLigne)
{
int longueur= ligneSaisie.length();
int caracteresRestant= longueurLigne - longueur;
int nbMots= compterMots(ligneSaisie) - 1;
int espacement= caracteresRestant / nbMots;
String espaces= " ";
String res= "";
int i, j= 0;

for(i= 0; i < espacement; i++)
espaces+= ' ';

while( (i= ligneSaisie.indexOf(j, ' ')) >= 0 )
{
res+= ligneSaisie.substring(j, i) + espaces;
j= i;
}

return res + ligneSaisie.substring(j, i);
}

int compterMots(String ligne)
{
int res;

for(res= 0; (i= ligneSaisie.indexOf(j, ' ')) >= 0; res++)
{
res+= ligneSaisie.substring(j, i) + espaces;
j= i;
}

if( ligneSaisie.substring(j, i) > 0 )
res++;

return res;
}

Core Breaker :)
0
Rejoignez-nous