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 :

[StringBuffer] Texte non pris en entier


Sujet :

Collection et Stream Java

  1. #1
    Membre expérimenté
    Avatar de GLDavid
    Homme Profil pro
    Head of Service Delivery
    Inscrit en
    Janvier 2003
    Messages
    2 892
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Head of Service Delivery
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 892
    Par défaut [StringBuffer] Texte non pris en entier
    Bonjour

    Voici mon problème, je cherche à numéroter des bases dans une séquence d'ADN à partir d'une base sélectionnée par l'utilisateur à l'aide de la méthode suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    private String []setNumberLine(int []t, int size) {
            String []lineNumbered = new String[size];
            StringBuffer sbuff = new StringBuffer(CountIt.jTextArea1.getText());
            int cpt=0;
            int j=0;
            int start = 0;
            for (int i=0; i<sbuff.length()-1; i++) {
                if (!Character.isWhitespace(sbuff.charAt(i)))
                    cpt = cpt+1;
                else {
                    int n = t[start];
                    String s = ""+n+" "+sbuff.substring(start, cpt);
                    lineNumbered[j] = s;
                    j = j+1;
                    start = i+1;
                }
            }
            return lineNumbered;
        }
    setNumberLine prend un tableau (recensant la position de chacune des bases cad des lettres) et size étant le nombre de lignes du texte.
    Ces deux paramètres sont vérifiés et sont correctes.
    Mon souci c'est que quand j'affiche avec un toString mon StringBuffer, je remarque qu'il me manque des caractères à la fin.
    Pourtant, je pense avoir pris la globalité de mon texte avec un getText mais appremment non.
    Où me suis-je planté ?

    Merci de vos réponses.

    @ ++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code :tagcode: ni le tag :resolu:

    Je ne répond à aucune question technique par MP.

  2. #2
    Membre averti
    Inscrit en
    Février 2003
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 22
    Par défaut C'est peut-être con mais...
    Tu as déjà essayé de remplacer la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    for (int i=0; i<sbuff.length()-1; i++) { 
    par ceci
    for (int i=0; i<sbuff.length(); i++) {

  3. #3
    Membre expérimenté
    Avatar de GLDavid
    Homme Profil pro
    Head of Service Delivery
    Inscrit en
    Janvier 2003
    Messages
    2 892
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Head of Service Delivery
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 892
    Par défaut
    En fait, je suis obligé de faire cette manip' comme tu l'indique pour pas qu'il y ait de dépassement dans le tableau que je passe en argument.
    Et même si je lis le texte en entier, j'ai toujours des caractères à la fin qui me manque .
    Merci toutefois de ta réponse.

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code :tagcode: ni le tag :resolu:

    Je ne répond à aucune question technique par MP.

  4. #4
    Candidat au Club
    Femme Profil pro
    Inscrit en
    Mars 2004
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 3
    Par défaut
    Est-ce que tu sais à quel moment de la boucle il te bouffe les caractères(dernière itération ou avant ??) ?

    Sinon, méfie-toi, le substring() est traitre.... Es-tu sûr des indexes que tu lui passes (start et cpt) ?

  5. #5
    Membre expérimenté
    Avatar de JHelp
    Inscrit en
    Octobre 2002
    Messages
    185
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 185
    Par défaut
    Ton but est bien de découper ta chaine de caratéres selon des espaces, dans ce cas regarde la classe StringTokenizer, qui fait ça trés bien.
    Sinon, pour le substring, le second argument n'est pas le nombre de caractére à lire mais l'indice du dernier caractére +1
    cpt à l'air de compter le nombre de caractére non blanc, mais dans ce cas, il se trouve décaler à chaque fois qu'il y a un caractére blanc, d'où les caractéres "disparus".
    JHelp

  6. #6
    Membre expérimenté
    Avatar de GLDavid
    Homme Profil pro
    Head of Service Delivery
    Inscrit en
    Janvier 2003
    Messages
    2 892
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Head of Service Delivery
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 892
    Par défaut
    Pour ruthMarx, il me bouffe mes caractères à la dernière itération.
    Pour JHelp, je te remercie pour les deux conseils, je vais regarder ça.

    Merci ! Je vous tiens au courant !

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code :tagcode: ni le tag :resolu:

    Je ne répond à aucune question technique par MP.

  7. #7
    Membre expérimenté
    Avatar de GLDavid
    Homme Profil pro
    Head of Service Delivery
    Inscrit en
    Janvier 2003
    Messages
    2 892
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Head of Service Delivery
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 892
    Par défaut
    Cool, it works ! En effet, JHelp, la classe StringTokenizer (dont j'avoue que je ne m'en sers pas beaucoup ) m'a été très utile !
    Voici pour ceux que ça intéresse ma classe finale :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
     
    public class ProcessFile {
     
        int nbRows=1;
        String []tString;
        /** Creates a new instance of ProcessFile */
        public ProcessFile(int position, int nb) {
            String s = CountIt.jTextArea1.getText();
            for (int i=0; i<s.length()-1; i++) {
                Character c = new Character(s.charAt(i));
                if (c.isWhitespace(s.charAt(i)))
                    nbRows = nbRows+1;
            }
            int tableau[] = makeNumbers(position, nb);
            tString = setNumberLine(tableau, nbRows);
            s = new String("");
            for (int i=0; i<tString.length; i++)
                s = s+tString[i]+"\n";
            CountIt.jTextArea1.selectAll();
            CountIt.jTextArea1.replaceSelection("");
            CountIt.jTextArea1.setText(s);
        }
     
        private int []makeNumbers (int pos, int n) {
            int toRight[] = new int[n-pos];
            for (int j=0; j<toRight.length; j++)
                toRight[j] = j;
            int toLeft[] = new int[pos];
            for (int j=toLeft.length-1, k=0; j>-1; j--, k--)
                toLeft[j] = k;
            int tab[] = new int[toLeft.length+toRight.length];
            for (int i=0; i<toLeft.length; i++)
                tab[i] = toLeft[i];
            for (int i=toLeft.length, j=0; i<tab.length && j<toRight.length; i++, j++)
                tab[i] = toRight[j];
            return tab;
        }
     
        private String []setNumberLine(int []t, int size) {
            String []lineNumbered = new String[size];
            StringBuffer sbuff = new StringBuffer(CountIt.jTextArea1.getText());
            int number[] = makeStartNumber(sbuff, size, t);
            System.out.println();
            StringTokenizer sToken = new StringTokenizer(CountIt.jTextArea1.getText());
            int j = 0;
            while (sToken.hasMoreTokens()) {
                lineNumbered[j] = ""+number[j]+"\t"+sToken.nextToken();
                j++;
            }
            return lineNumbered;
        }
     
        private int []makeStartNumber(StringBuffer sb, int size, int []tab) {
            int []t = new int[size];
            int cpt=0;
            int j=0;
            int start = 0;
            for (int i=0; i<sb.length(); i++) {
                if (Character.isWhitespace(sb.charAt(i))) {
                    t[j] = tab[start];
                    j = j+1;
                    start = i+1;
                }
            }
            return t;
        }
     
    }
    Merci encore à vous ! :o

    A charge de revanche !

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code :tagcode: ni le tag :resolu:

    Je ne répond à aucune question technique par MP.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [CS5] Texte non entier en mode création
    Par absinthium dans le forum Dreamweaver
    Réponses: 14
    Dernier message: 23/08/2013, 09h47
  2. Réponses: 6
    Dernier message: 01/04/2011, 16h35
  3. Texte de setMessage non pris en compte (getValidator)
    Par __fabrice dans le forum Zend_Form
    Réponses: 3
    Dernier message: 11/09/2009, 10h15
  4. [TortoiseSVN] Format Unix d'un fichier texte non pris en compte lors d'un commit
    Par jonzuzu dans le forum Subversion
    Réponses: 0
    Dernier message: 26/03/2009, 13h49
  5. [HTML] text-align: justify; non pris en compte ?...
    Par {F-I} dans le forum Balisage (X)HTML et validation W3C
    Réponses: 12
    Dernier message: 30/03/2008, 23h49

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