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

avec Java Discussion :

attribuer un rang à chaque espace dans une phrase en utilisant une LinkedList


Sujet :

avec Java

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2008
    Messages
    207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2008
    Messages : 207
    Points : 114
    Points
    114
    Par défaut attribuer un rang à chaque espace dans une phrase en utilisant une LinkedList
    Bonjour,

    je débute sur les listes, et j'aimerais, quand je tape une phrase, que les caractères soient stockés dans une LinkedList. Je suis parvenu à faire cela.

    Mais à présent, j'aimerais pouvoir insérer d'autres caractères au niveau des espaces, et je ne sais pas comment faire.

    Je me disais qu'on pouvait peut-être définir un rang à chaque espace, mais comment faire pour définir qu'il s'agit du rang 1, 2, 3 etc?

    Merci d'avance pour votre aide, je patauge pas mal.

    Je vous mets déjà ce que j'ai fait:
    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
    LinkedList<Character> texte = new LinkedList<Character>();
     
     
    public void ajoutCaractereEnQueue(char c){
        	texte.add(c);
        }
     
        public void saisirStringClavier(){
        	String phrase = Terminal.lireString();
        	this.AjoutStringEnQueue(phrase);
        }
     
    public void AjoutStringEnQueue(String s){
        	s.toCharArray();
        	for (int i=0;i<s.length();i++){
        		this.ajoutCaractereEnQueue(s.charAt(i));
        	}
        }
    Je me dis que je pourrais utiliser quelque chose comme ça:
    ListIterator it = contenu.listIterator();

    Mais je ne vois pas encore comment faire.

    A bientôt et merci d'avance,
    Johnny3

  2. #2
    Membre confirmé Avatar de miloux32
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    545
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 545
    Points : 565
    Points
    565
    Par défaut
    Merci pour la balise code

    Je ne comprends pas ta notion de rang.
    Peus tu la préciser davantage ?
    En gros tu veux avoir le 1er espace, le 2nd etc ?
    en utilisant un indexOf sur une sous-chaine allant de l'espace précedent à la fin de ta chaine,ca ne marche pas ?
    Sinon tu veux remplacer tous tes espaces par la meme chose ? un replaceall marche pas ?
    C'est pas parce que ca marche que c'est bon!!
    Pensez au bouton "Résolu"
    Je ne réponds pas en privé aux questions

  3. #3
    Membre averti

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2008
    Messages : 85
    Points : 355
    Points
    355
    Par défaut
    j'avoue ne pas très bien saisir la notion de rang que tu souhaites insérer non plus:

    serait-ce un qqchose dans ce style que tu souhaites ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public void AjoutStringEnQueue(String s){
        	int nbEspace = 1;
            s.toCharArray();
        	for (int i=0;i<s.length();i++){
                    if(s.charAt(i)==' ')
                               this.ajoutCaractereEnQueue(nbEspace);
                               nbEspace++;
                    else
        		           this.ajoutCaractereEnQueue(s.charAt(i));
        	}
        }

  4. #4
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2008
    Messages
    207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2008
    Messages : 207
    Points : 114
    Points
    114
    Par défaut précisions
    Alors en fait, mon but est de:

    - taper une phrase qui sera placée dans une LinkedList, caractère par caractère
    - insérer une autre phrase à un espace donné mais en demandant à l'utilisateur le rang (= l'espace) où il veut insérer d'autres mots.

    Par exemple, si j'ai la phrase: "Le ciel est clair"

    Chaque caractère est placé dans une LinkedList, et donc j'obtiens quelque chose du type:
    [L,e, ,c,i,e,l, ,e,s,t, ,c,l,a,i,r]

    J'ai donc deux espaces: après "Le" et après "est".

    Mon rang 1 se situe donc après "Le" et mon rang 2 après "est"

    Du coup, quand l'utilisateur voudra insérer un mot ou toute une phrase, il obtiendra quelque chose du style:

    A quel rang voulez-vous placer votre phrase?
    réponse: 2
    Tapez la phrase: bleu

    Et du coup, j'obtiendrai Le ciel est bleu clair.

    Mais je ne sais pas comment définir chaque espace en terme de rang pour pouvoir appeler la méthode d'insertion.

  5. #5
    Membre confirmé Avatar de miloux32
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    545
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 545
    Points : 565
    Points
    565
    Par défaut
    euh il suffit de parcourir ta linkedlist en incrémentant un compteur à chaque espace rencontré ...

    Quand ton compteur est égal au nombre saisi par l'utilisateur tu ajoutes ton mot ..

    PS. tu as 3 espaces
    tu obtiendras : le ciel bleu est clair
    C'est pas parce que ca marche que c'est bon!!
    Pensez au bouton "Résolu"
    Je ne réponds pas en privé aux questions

  6. #6
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2008
    Messages
    207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2008
    Messages : 207
    Points : 114
    Points
    114
    Par défaut
    Citation Envoyé par miloux32 Voir le message
    Merci pour la balise code

    Je ne comprends pas ta notion de rang.
    Peus tu la préciser davantage ?
    En gros tu veux avoir le 1er espace, le 2nd etc ?
    en utilisant un indexOf sur une sous-chaine allant de l'espace précedent à la fin de ta chaine,ca ne marche pas ?
    Sinon tu veux remplacer tous tes espaces par la meme chose ? un replaceall marche pas ?
    Comment utilise-t-on IndexOf? Je découvre les listes et j'apprends les méthodes petit à petit.

    Merci d'avance,
    Johnny3

  7. #7
    Membre confirmé Avatar de miloux32
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    545
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 545
    Points : 565
    Points
    565
    Par défaut
    Citation Envoyé par johnny3 Voir le message
    Comment utilise-t-on IndexOf? Je découvre les listes et j'apprends les méthodes petit à petit.

    Merci d'avance,
    Johnny3

    http://java.sun.com/j2se/1.4.2/docs/...inkedList.html


    avec les méthode indexOf et add ( celle qui insere) ca devrait être assez simple
    C'est pas parce que ca marche que c'est bon!!
    Pensez au bouton "Résolu"
    Je ne réponds pas en privé aux questions

  8. #8
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2008
    Messages
    207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2008
    Messages : 207
    Points : 114
    Points
    114
    Par défaut
    Citation Envoyé par miloux32 Voir le message
    http://java.sun.com/j2se/1.4.2/docs/...inkedList.html


    avec les méthode indexOf et add ( celle qui insere) ca devrait être assez simple
    J'ai essayé, mais je n'y parviens pas. Pourrais-tu me donner un exemple d'insertion avec IndexOf (sans utiliser ce que j'ai écrit)? Je comprends mieux par l'exemple.

    Merci,
    Johnny3

  9. #9
    Membre confirmé Avatar de miloux32
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    545
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 545
    Points : 565
    Points
    565
    Par défaut
    Je veux bien essayer de t'en donner un sur le principe mais sans compilateur et mes souvenirs des linkedlist sont assez loin ....
    Je viens de vérifier je pensais que indexOf marchait comme sur les String et qu'on pouvait spécifier un indice de départ, on ne peut pas, ca ne change rien on va faire comme ca

    ca doit donenr un truc du genre :
    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
     
    LinkedList<Character> texte = new LinkedList<Character>();
          [...] //tu initialises ta liste là 
    String mot ="bleu"; // mot à inserer
    int position = 2; // je fixe à 2 arbitrairement le rang de l'espace pour simplifier
    int tailleListe =text.size(); // taille de la liste
    int compteur =0; // compteur d'espaces
    int i =0 ; // compteur de boucle
    boolean insert =false; // insertion faite = faux 
    while (i <= tailleListe && !insert)
    {
       if( ((String) text.get(i)).equals(" ") ) // si le  ieme élément est un espace
     // Rque le test est sans doute pas casté comme il faut 
        { 
       compteur ++; // on incremente le nombre d'espace trouvé 
        }
    if( compteur == position)   // si on est sur le bon espace 
    {
      insert = true ; // on a trouvé on insere, et on ne passera plus dans le while
      for(int j=0;j<=mot.length;j++) // on boucle sur le mot à insérer
       {
       texte.add(i+j,mot.charAt(j)); // on inséree en i+ j position 
                                               //( i = position de l'espace 
                                               // j position des lettres )
       }
    }
    i++; // on incrémente i 
    }


    Ce code est sans doute bourré d'erreur de syntaxe et à pour but de montrer la logique du traitement plus qu'autre chose.
    Encore une fois, je l'ai sorti comme ca, sans compilateur sous la main ....

    on doit pouvoir utiliser subList pourfaire ce que je voulais faire avec indexOf
    genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      char espace =" ";
      int i =  text.indexOf(espace);
      LinkedList<Character> texte2 = texte.subList(i,text.size());
        int j = texte2.indexOf(espace);
    etc etc etc
    C'est pas parce que ca marche que c'est bon!!
    Pensez au bouton "Résolu"
    Je ne réponds pas en privé aux questions

  10. #10
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2008
    Messages
    207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2008
    Messages : 207
    Points : 114
    Points
    114
    Par défaut
    merci beaucoup, je vais essayer tout ça.

  11. #11
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2008
    Messages
    207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2008
    Messages : 207
    Points : 114
    Points
    114
    Par défaut réussi
    J'ai réussi, merci beaucoup!

    A présent, je vais me consacrer à deux autres problèmes: la suppression d'un mot et le copier coller d'un mot à un endroit de la liste.

    Merci encore, ça m'a beaucoup aidé.

    Johnny3

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 06/06/2015, 11h14
  2. [phpMyAdmin] [PMA] - Vous devez ajouter dans le fichier de configuration une phrase de passe secrète (blowfish_secret).
    Par selmac594 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 03/02/2012, 11h36
  3. Récuération d'une variable qui contient une phrase
    Par lama85 dans le forum Langage
    Réponses: 1
    Dernier message: 23/08/2006, 13h52
  4. copie d'une table Y d'une base A vers une table X d'une base
    Par moneyboss dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 30/08/2005, 21h24
  5. Réponses: 7
    Dernier message: 13/01/2005, 10h30

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