IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Collection et Stream Java Discussion :

Problème avec un ArrayList et attribut String


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 66
    Par défaut Problème avec un ArrayList et attribut String
    Bonjour,

    J'ai créé une nouvelle classe LigneColonne afin de formater et équilibrer du texte dans une colonne pour un affichage en console. Le constructeur ressemble à ceci :

    ------------------------------------------------
    CODE 1:

    public class LigneColonne {

    private Ansi ansi = new Ansi();
    private String ligne=new String();

    public LigneColonne(Ansi ansi, String ligne) {

    this.ansi = ansi;
    this.ligne = new String(Arrays.copyOfRange(ligne.toCharArray(), 0, ligne.length()));
    }
    [...]
    --------------------------------------------------

    Dans la methode Justify de la classe LigneColone j'essaie de découper les lignes en fonctione d ela largeur des colonnnes. Chaque ligne découpée est donc ajoutée à un ArrayList. Par exemple la ligne suivante :

    /home/gelinp/06_PROGRAMATION/hsqldb/src/org/hsqldb/lib

    devrait être découpée en deux lignes d'une largeur max de 50 caractères :


    ArrayList[0] : /home/gelinp/06_PROGRAMATION/hsqldb/src/org/hsqldb/lib
    ArrayList[1] : b/lib

    Ce découpage est réalisé dans la méthode justify par le code ci-dessous :
    --------------------------------------------
    CODE 2:
    public List<LigneColonne> justify(int lrg) {

    ArrayList<LigneColonne> aLignes = new ArrayList<LigneColonne>();
    [...]
    String sjustified = ligne.substring(idx1, idx2);
    [...]
    aLignes.add(new LigneColonne(ansi, String.format(ftleft,sjustified)));
    [...]
    ------------------------------------------------

    Le problème c'est que ce code produit le résultat suivant :

    ArrayList[0] : "> /home/gelinp/06_PROGRAMATION/hsqldb/src/org/hsql"
    ArrayList[1] : "> /home/gelinp/06_PROGRAMATION/hsqldb/src/org/hsqldb/lib"

    Ce qui ne va pas, ici en rouge, c'est que l'instance LigneColonne ajouté dans la seconde lignedu tableau partage pour son attribut ligne, la même String que l'instance LigneColonne ajoutée sur la première ligne du tableau !

    J'ai l'impression qu'il y aurait donc un problème de clonage de String. Du notamment à la succession des deux instruction : substring puis String.format. Dans mon code j'ai testé en debug la chaine après substring et c'est ok, par contre après le format je retrouve ma chaine concaténée.

    Si vous avez une idée, merci pour votre aide !

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur Java / JEE
    Inscrit en
    Février 2008
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Java / JEE

    Informations forums :
    Inscription : Février 2008
    Messages : 185
    Par défaut
    Bonjour,

    Je ne suis pas très sûr d'avoir compris ce que tu fais, mais l'instruction String.substring() n'enlève rien à la chaine de caractères initiale.
    Il te faudra faire quelque chose du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    int x =10;
    String maLigne = "ceci est un test";
    String left = maLigne.substring(0, x);
    String right = maLigne.substring(x, maLigne.length());
    System.out.println(left);
    System.out.println(right);
    Mathieu

    PS : Pour publier du code il te faut utiliser la balise "CODE" (le #) dans l'éditeur.

Discussions similaires

  1. problème avec une variable de type string
    Par marsupilami34 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 14/06/2007, 14h53
  2. Problème avec un ArrayList
    Par LeNovice dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 03/03/2007, 23h12
  3. Problème avec StingTokenizer vers tableau de String
    Par Invité dans le forum Collection et Stream
    Réponses: 9
    Dernier message: 06/10/2006, 11h22
  4. Problème avec un switch contenant des strings
    Par dessinateurttuyen dans le forum Langage
    Réponses: 6
    Dernier message: 18/07/2006, 12h56
  5. Problème avec RegEx et une Query string
    Par Erakis dans le forum Langage
    Réponses: 6
    Dernier message: 08/11/2005, 15h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo