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 :

Multiplier les chiffres dans une chaîne de caractères


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2011
    Messages : 57
    Par défaut Multiplier les chiffres dans une chaîne de caractères
    Bonjour

    j'ai deux fichiers comme suit:
    le premier contient un mot ou un mots composé par lignse exemple:
    aaaaaa
    aaaa bbbb
    aabbbbbb aa
    dddd
    et le deuxième contient des mots suivis par des chiffres exemple
    aaaaaa 8.3333
    aaaa b 7.3333
    aab 6.22222
    dddd 1.3333

    je voulais écrire un programme java qui compare ces deux fichiers et s'il trouve une ligne en commun (le cas de la ligne 1 et 4) il multiplie le chiffre qui lui correspond par 2.
    le fichier 2 doit devenir comme ça:
    aaaaaa 16.6666
    aaaa b 7.3333
    aab 6.22222
    dddd 2.6666

    La difficulté que je trouve est comment accéder en premier lieu a ces mots dans le deuxième fichier sans prendre en considération les chiffres pour pouvoir les comparer avec les mots du premier fichier puis en deuxième lieu comment accéder seulement au chiffres correspondant aux mots se trouvant dans les deux fichiers pour les multiplier par 2.

    Merci d'avance

  2. #2
    Membre confirmé
    Inscrit en
    Juillet 2010
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 58
    Par défaut
    Bonjour

    Pour découper une chaîne de caractère, tu peux utiliser StringTokenizer

    http://docs.oracle.com/javase/1.4.2/...Tokenizer.html

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
      String str="aaaaaa 16.6666";
      String  aaa=null;
      Double nombre=null;
     
       //tu splitte ta châine en fonction de l'espace
       StringTokenizer stringTokenizer = new StringTokenizer(str);
     
            //Parcours
            while (stringTokenizer.hasMoreElements())
            {
                  aaa=stringTokenizer.nextElement().toString();
                  nombre=Double.parseDouble(stringTokenizer.nextElement().toString());
            }
    Je ne sais pas si c'est la meilleure façon de faire, mais ça devrait fonctionner

  3. #3
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2011
    Messages : 57
    Par défaut
    Merci pour votre réponse mais j'ai testé ça et n'a rien donné
    quelqu'un pourrait me proposer une autre solution SVP

  4. #4
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2012
    Messages
    3 020
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

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

    Informations forums :
    Inscription : Septembre 2012
    Messages : 3 020
    Par défaut
    Humm, montres nous comment tu as testé, parce que même si c'est sans doute pas la méthode la plus simple, ce que propose seb111983 devrait marcher.

    Sinon, tu peux aussi utiliser les expression régulières.

    Si tu sais que tu as une pour plusieurs chaine de caractères [a-z,A-Z] (avec ou sans espaces) suivi (ou non) d'un nombre, tu peux vite extraire la chaine de caractère et le chiffre.

    Ensuite tu boucles pour comparer; et tu changes la valeur là ou ça va bien.

  5. #5
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Citation Envoyé par Carhiboux Voir le message
    Humm, montres nous comment tu as testé, parce que même si c'est sans doute pas la méthode la plus simple, ce que propose seb111983 devrait marcher.
    Techniquement non, elle ne gère pas la deuxième ligne. Mais bon... Ça aurait été sympa de dire ça, au lieu de "ça marche pas !"

    Une regex peut faire l'affaire.
    Mais moi je regarderais juste où est le dernier espace de la ligne avec lastIndexOf(), puis je ferais un subString() pour extraire la chaîne avant ce dernier espace. C'est plus simple qu'un Matcher et des group().
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2012
    Messages
    3 020
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

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

    Informations forums :
    Inscription : Septembre 2012
    Messages : 3 020
    Par défaut
    Si, c'est possible, c'est pas élegant, et c'est pas aussi simple que la solution que tu propose, mais un truc du genre, ça marche :

    Code java : 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
     
    String ligneA="aaaa bbbb";
    		  String ligneA2 = "aaaa bbbb 12.254";
    		  boolean equal = true;
     
    		   //tu splitte ta châine en fonction de l'espace
    		   StringTokenizer stringTokenizerA = new StringTokenizer(ligneA);
    		   StringTokenizer stringTokenizerA2 = new StringTokenizer(ligneA2);
    		        //Parcours
    		   		if(stringTokenizerA2.countTokens() == stringTokenizerA.countTokens()+1){
    			        while (stringTokenizerA.hasMoreElements() && equal)
    			        {
    			        	if(!stringTokenizerA.nextToken().equals(stringTokenizerA2.nextToken())){
    			        		equal = false;
    			        	}
    			        }
     
    		   		}else{
    		   			equal = false;
    		   		}
                                    //si equal = true, tous les tokens sont identiques, et le dernier token de stringTokenizerA2 est le nombre
    			        // le parser et faire x2 dessus
     
    			        // reconstituer la chaine avec la nouvelle valeur

    Donc c'est pas classe, c'est pas trivial et ta solution est infiniment mieux, mais ca pouvait quand même marcher! :p

    (moi, têtu, jamais! )

Discussions similaires

  1. Réponses: 4
    Dernier message: 30/11/2011, 22h31
  2. Supprimer les espaces dans une chaîne de caractère
    Par Med_be dans le forum Débuter
    Réponses: 7
    Dernier message: 15/11/2010, 03h17
  3. Réponses: 16
    Dernier message: 19/11/2008, 12h02
  4. Effacer les espaces dans une chaîne de caractères
    Par JohnnyWalk dans le forum Débuter avec Java
    Réponses: 16
    Dernier message: 19/07/2007, 14h13
  5. [Tableaux] Extraire les chiffres dans une chaîne
    Par Digiduck dans le forum Langage
    Réponses: 8
    Dernier message: 16/08/2006, 14h33

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