J'ai vu ça il y a longtemps mais j'ai oublié.
Je voudrias faire qqchose comme
String machaine = fabrique ("-",10);
pour faire une chaine "-----------"
J'ai vu ça il y a longtemps mais j'ai oublié.
Je voudrias faire qqchose comme
String machaine = fabrique ("-",10);
pour faire une chaine "-----------"
je crois que tu peux faire
String s = "-";
s *=10;
EDIT : désolé je me suis trompé (c'est pas en java), mais je n'arrive pas à supprimer mon message. Tant pisj'assume
Salut,
Il suffit de passer par un StringBuffer (ou StringBuilder en Java 5.0) :
a++
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 public static String fabrique(String s, int count) { StringBuffer buf = new StringBuffer(count*s.length()); for (int i=0; i<count; i++) { buf.append(s); } return buf.toString(); }
Oui, c une solution.
Mais j'aurai aimé un truc plus simple du genre String toto = new String('-',10);
(mais ce constructeur n'existe pas...)
à mon avis t'as pas le choixEnvoyé par zev
![]()
je réfléchissais à une solution avec un tableau de char mais bon c'est pas mieux (voir pire plutôt)
Pourquoi ne veux tu pas utiliser la solution proposée ? Il y a une raison ?
Pourquoi vouloir une solution "plus simple" alors que celle proposée remplie ton exigence de résultat ?Envoyé par zev
![]()
Ben parce que ce n'est pas joli, ça fait trop de lignes![]()
Ce serait comme de splitter une date avec des substring et compagnie pour l'afficher plutot que d'utiliser un simpledateformat.
Mais merci quand même pour la proposition.![]()
Envoyé par in
Pourquoi ca ? Au contraire c'est plus efficace a mon avis.
Moi j'aurais ecris ca:
A mon avis cote performances c'est bcp plus rapide que le coup du StringBuffer.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 public static String fillStringWith(char aChar, int aLength) { char buf[] = new char(aLength); Arrays.fill(buf, aChar); return new String(buf); }
Bulbo![]()
Et bien si tu avais un constructeur il ferait grosso-modo la même chose...Envoyé par zev
Sinon avec moins de ligne tu as cette solution :
Code : Sélectionner tout - Visualiser dans une fenêtre à part String machaine = "----------");
a++
[edit]heu... grilled en fait, j'avais pas vu le post de bulbo qui fait la meme chose
Code : Sélectionner tout - Visualiser dans une fenêtre à part new String(Arrays.fill(new char[10],'-'));[/edit]
Salut,
Pas la peine de réinventer la roue y'a ce qu'il faut dans le package common
de jakarta :-)
http://jakarta.apache.org/commons/la...%20int,%20char)
String s = StringUtils.leftPad("", 10, '-');
et hop c fini !
a+
Xavier
Download : http://jakarta.apache.org/site/downl...mmons-lang.cgi
MDR!Envoyé par adiGuba
Bonjour,
A la limite ca marcherais aussi ceci non?:Il suffit de passer par un StringBuffer (ou StringBuilder en Java 5.0)
Enfin si j'ai bien compris
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 public String fabrique(String s, int count){ for(int i=0;i<count;i++){ s=s+"-"; } return s; }![]()
Oui ça marche aussi mais :Envoyé par nicotine002
Comment concatener des chaînes de caractères ?
Je ne répondrai à aucune question technique par MP.
Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
Enfin, quand une solution a été trouvée à votre problème pensez au tag :resolu:
Cours Dvp : http://ydisanto.developpez.com
Blog : http://yann-disanto.blogspot.com/
Page perso : http://yann-disanto.fr
Oui d'où le "A la limite"Oui ça marche aussi mais : Comment concatener des chaînes de caractères ?
Je savais que ca demandais plus de travail à la jvm mais je pensais pas que ca ré-instanciait l'objet à chaque itération.Donc...Merci pour l'info![]()
En fait l'opérateur + utilise implicitement un StringBuffer/StringBuilder (selon la version). Ce qui fait que ton code est l'équivalent de celui ci :Envoyé par nicotine002
Cela permet de mieux voir le problème : la création de deux objets (un StringBuffer et un String via toString()) à chaque itération...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 public String fabrique(String s, int count){ for(int i=0;i<count;i++){ s = new StringBuffer(s).append("-").toString(); // s=s+"-"; } return s; }
Bien sûr pour 10 itérations cela ne se ressent pas... mais si le nombre d'itération est très grand cela risque de plomber les perfs car le GC va allourer/déssallouer la mémoire sans arrêt...
a++
Ok, merci pour l'info, j'ai plus qu'à regarder dans tout mes soft si je ne fais pas trop ce genre de chose losque l'itération se fait plusieurs millier de fois...
En passant j'ai une autre question sur les JTable, vu que je travail sur des dizaine de miller de données à inserer dans des JTable, je me demandais quel était le meilleur moyen de les insérer?Est-il préférable dans ce cas là de le creer avec ce constructeur(où même un model):
Où bien alors de creer la JTable et d'inserer les données ensuite via setValueAt?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 JTable(Object[][])
Voilà c'était juste un question en passant, plutot que de creer un post
Merci d'avance.
Merci pour toutes ces solutions
J'ai retenu :
(merci bulbo)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 public static String fillStringWith(char aChar, int aLength) { char buf[] = new char(aLength); Arrays.fill(buf, aChar); return new String(buf); }
ou en installant le package common de jakarta (jar ici) :
(merci xfacq)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 int aLength = 10; String s = StringUtils.leftPad("", aLength, '-');
Partager