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

Java Discussion :

Distance entre deux termes x et y


Sujet :

Java

  1. #1
    Membre confirmé
    Femme Profil pro
    Doctorante
    Inscrit en
    Mai 2012
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Doctorante
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2012
    Messages : 58
    Par défaut Distance entre deux termes x et y
    Bonjour,
    je suis en train de calculer la distance entre deux termes x et y = nombre de mots entre x et y
    cette partie que je dois l'ajouter à mon code,
    Tout d'abord je dois vérifier que les deux termes existent dans la même phrase et ça c'est bon
    Aussi l'extraction de la chaîne entre les deux termes (le code au dessous que j'ai trouvé dans le net) et le calcul de nombre de mots aussi j'ai pu le faire:
    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
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    package DistanceEntreMots;
     
     
    public class CalculDistance {
     
        public static String subStringBetween(String sentence, String before, String after) {
     
            int startSub = CalculDistance.subStringStartIndex(sentence, before);
            int stopSub = CalculDistance.subStringEndIndex(sentence, after);
     
            String newWord = sentence.substring(startSub, stopSub);
            return newWord;
        }
     
        public static int subStringStartIndex(String sentence, String delimiterBeforeWord) {
     
            int startIndex = 0;
            String newWord = "";
            int x = 0;
     
            for (int i = 0; i < sentence.length(); i++) {
                newWord = "";
     
                if (sentence.charAt(i) == delimiterBeforeWord.charAt(0)) {
                    startIndex = i;
                    for (int j = 0; j < delimiterBeforeWord.length(); j++) {
                        try {
                            if (sentence.charAt(startIndex) == delimiterBeforeWord.charAt(j)) {
                                newWord = newWord + sentence.charAt(startIndex);
                            }
                            startIndex++;
                        } catch (Exception e) {
                        }
     
                    }
                    if (newWord.equals(delimiterBeforeWord)) {
                        x = startIndex;
                    }
     
     
                }
            }
            return x;
        }
     
        public static int subStringEndIndex(String sentence, String delimiterAfterWord) {
     
            int startIndex = 0;
            String newWord = "";
            int x = 0;
     
            for (int i = 0; i < sentence.length(); i++) {
                newWord = "";
     
                if (sentence.charAt(i) == delimiterAfterWord.charAt(0)) {
                    startIndex = i;
                    for (int j = 0; j < delimiterAfterWord.length(); j++) {
                        try {
                            if (sentence.charAt(startIndex) == delimiterAfterWord.charAt(j)) {
                                newWord = newWord + sentence.charAt(startIndex);
                            }
                            startIndex++;
                        } catch (Exception e) {
                        }
     
                    }
                    if (newWord.equals(delimiterAfterWord)) {
                        x = startIndex;
                        x = x - delimiterAfterWord.length();
     
                    }
     
     
                }
     
            }
            return x;
     
        }
     
    }
    Mais ce code pose problème si les deux termes x et y n'ont pas des mots entre eux c'est dire juste une espace "x y" et aussi si y se situent avant x dans la phrase
    j'ai essayé de faire une condition de comparer l'indice du premier mot avec l'indice du deuxieme mot:
    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
    	 StringTokenizer tokenizer = new StringTokenizer (phrase," ");
    							 String start = m1;	
    							 String end = m2;
    							   int indice1 =0;  int indice2 =0; int ind1=0;int ind2=0;
    						       while (tokenizer.hasMoreTokens ()) { 
    						    	   indice1++;indice2++;
    						    	String  word = tokenizer.nextToken();
    						    	if(start.contains(word)){
    						    		ind1=indice1;
     
    						    	} 
    						        if(end.contains(word)){
    						    		 ind2=indice2;
     
    						    	}
     
    						       }
    						       if(ind1<ind2){
     
    						    		 System.out.println(ind1+"<"+ind2);	
    						    		 String str =CalculDistance.subStringBetween(phrase, start, end);
    										System.out.println(str);
     
    						    	}
    cette condition n'a pas résolu le problème
    exemple: dans une une phrase:" officer a to spot letter ." si x= a et y = letter
    le résultat:
    2<5
    to spot
    mais dans le cas où existe une autre "a" qui se situe dans la phrase comme ceci: "his officer a to spot letter test a test."
    au lieu d'afficher même résultat que le précédent mais il n'affiche rien :/

  2. #2
    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
    Personnellement je découperais d'abord la String en un tableau des mots qu'elle contient avec split().

    Et ensuite, je chercherais dans quels index du tableau se trouvent les mots en question, et je ferais la différence des indexes. C'est pas le plus optimisé mais c'est suffisant et méchamment plus simple.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre confirmé
    Femme Profil pro
    Doctorante
    Inscrit en
    Mai 2012
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Doctorante
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2012
    Messages : 58
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      String [] mots=null;
    	    mots=stf.split(" ");int num1=0;int num2=0;
    		for(int g=0; g<mots.length;g++){
    		if(m1.equals(mots[g])){ num1=g+1;System.out.println(m1+"="+num1);}
    		if(m2.equals(mots[g])){ num2=g+1;System.out.println(m2+"="+num2);}
    ah c vraiment plus simple merci j'ai résolu le problème

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

Discussions similaires

  1. distance entre deux ville à partir de longitude/latitude
    Par sami_c dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 09/02/2007, 20h57
  2. Distance entre deux pixels
    Par bahiatoon dans le forum C++Builder
    Réponses: 4
    Dernier message: 13/01/2007, 10h47
  3. calcul distance entre deux villes
    Par alexfrei04 dans le forum Access
    Réponses: 2
    Dernier message: 08/01/2007, 21h49
  4. [Base de données Spatial] Distance entre deux points
    Par Pumpkins dans le forum Requêtes
    Réponses: 2
    Dernier message: 10/11/2006, 12h18
  5. Calcul de distance entre deux points en WGS84
    Par marieR dans le forum Langage
    Réponses: 5
    Dernier message: 03/08/2006, 17h07

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