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

Langage Java Discussion :

Problème de comparaison


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 30
    Par défaut Problème de comparaison
    Bonsoir tout le monde,

    J'ai un petit problème avec un code. Je voulais comparer deux groupes A et B , chaque groupe contient des classes et chaque classe possède des mots comme contenu. Je voulais avoir toutes les correspondances possibles :
    1 : une classe de groupe A peut correspondre à une classe de groupe B
    2 : une classe de groupe A peut correspondre à plusieurs classes de groupe B
    3 : plusieurs classes de A correspondent à une classe de B
    4 : l'inverse de 3:

    je vous donne le code :

    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
     
    public static void  correspondanceRefSys (HashMap<String, Set<String>> G, Set<String> E ){
    		/****************** Phase de comparaison Classe / concept******************/
    	//boolean b = false;  
    		boolean LabelDansListe;  
    		Object[] [] O = new Object [2][2];  
    		Set<String>  label =null;  
    		ArrayList<Object> liste = new ArrayList<Object>();  
    		String a= "";    
    		System.out.println("                                                    ");  
    		System.out.println("******** Comparaison Classe / Concept **************");  
    		Iterator <Set<String>> i = G.values().iterator();  
     
    		//tu creer un autre compteur 
     
    		int cpt2=0; 
          while (i.hasNext()) 
    		{  
    			int cpt = 0;
     
    			label = i.next();  
    			LabelDansListe = false ;
     
    			Iterator<String> j = E.iterator();  
    			while(j.hasNext()){ 
     
    				a =  j.next();  
     
     
    				if(label.contains(a)&& LabelDansListe == false){  
    					 LabelDansListe = true;
    					cpt++; 
    					liste.add(label);
     
    				}  
     
    			}
     
    			if(cpt!=0){//trouver des correspondant dans cette référence E 
     
    				O[cpt2][0] = E;//ajoute E au tableau de sortie 
    				System.out.println(O[cpt2][0]);
    				O[cpt2][1] = liste;//ainsi que sa liste 
    				System.out.println(O[cpt2][1]);
    				cpt2++;//incrémente le compteur pour la suite 
    				System.out.println(cpt2);
     
    			}
     
    				}
     
     
     
    	}
    Mais j'ai eu une exception quand j'avais augmenter le nombre d'entrées .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2
    	at EvalClass.Utilitaire.correspondanceRefSys(Utilitaire.java:84)
    	at EvalClass.Utilitaire.main(Utilitaire.java:155)
    merci d'avance de m'aider .

  2. #2
    Membre chevronné
    Inscrit en
    Juillet 2006
    Messages
    534
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 534
    Par défaut
    Bonjour,

    Peut-on avoir les sources correspondent les lignes dans les message d'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2
    	at EvalClass.Utilitaire.correspondanceRefSys(Utilitaire.java:84)
    	at EvalClass.Utilitaire.main(Utilitaire.java:155)

  3. #3
    Rédacteur
    Avatar de darrylsite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 299
    Par défaut
    Visiblement tu as un debordement d'indice. Je dirais que l'erreur provient de ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    if(cpt!=0){//trouver des correspondant dans cette référence E 
     
    				O[cpt2][0] = E;//ajoute E au tableau de sortie 
    				System.out.println(O[cpt2][0]);
    				O[cpt2][1] = liste;//ainsi que sa liste 
    				System.out.println(O[cpt2][1]);
    				cpt2++;//incrémente le compteur pour la suite 
    				System.out.println(cpt2);
     
    			}
    Sachant que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Object[] [] O = new Object [2][2];
    Quand cpt atteint au moins deux, on aura bien une erreur

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 30
    Par défaut
    merci beaucoup pour vos réponses , en fait j'ai augmenté le nombre de O [2][2] à O[200][2], ça marche mais tout d'abord :

    1 - j'ai augmenté à 200 alors que je peux avoir plus de données comment faire ?

    2 - est ce que c'est une bonne idée d'utiliser les tableaux (matrice) ?

    3 - concernant l'affichage sur eclipse, puisque j'ai plusieurs données, j'ai pas pu tout voir ??!!


    Merci d'avance pour votre aide

  5. #5
    Rédacteur
    Avatar de darrylsite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 299
    Par défaut
    Tu peux penser à utiliser des tableaux dynamique, Arraylist par exemple, si tu ne connais pas d'avance la taille des données.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 30
    Par défaut
    j'ai résolu le problème mais ce qui m'étonne c'est l'affichage. Je vous donne le code corrigé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public static void  correspondanceRefSys (HashMap<String, Set<String>> G, Set<String> E ) throws IOException{
    		/****************** Phase de comparaison Classe / concept******************/
     
    		System.out.println("******** Comparaison Classe / Concept **************");  
    		similaires(E,G, 3);
    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
     
     
     public static void /*boolean*/ similaires(Set<String> C, HashMap<String, Set<String>> D, int SeuilSimilitude)
         {
     
            int CSimilarToD = 0;
     
             Iterator <Set<String>> i = D.values().iterator(); 
            Set<String>  label =null;
            boolean LabelDansListe; 
            String a="";
            ArrayList<Object> liste = new ArrayList<Object>();
            Object[][] O = new Object[50][2];
             while (i.hasNext()) 
     		{  
            	 SimilarCToDCpt = 0;
     
     			label = i.next();  
     			LabelDansListe = false ;
     
     			Iterator<String> j = C.iterator();  
     			while(j.hasNext()){ 
     
     				a =  j.next();  
     
     				if((trouve(label, a))&& LabelDansListe == false ){  
     					LabelDansListe = true;
     					SimilarCToDCpt++; 
     					liste.add(label);
     
     
     				}  
     
     			}
    	if(SimilarCToDCpt!=0){//trouver des correspondant dans cette référence E 
    				O[CSimilarToD][0] = C;
    				System.out.println(O[CSimilarToD][0]);
    				O[CSimilarToD][1] = liste;
    				System.out.println(O[CSimilarToD][1]);
    				CSimilarToD++;//incrémente le compteur pour la suite 
     
    			}
     
     		}
     
     
     
     
            	 System.out.println(CSimilarToD);
     
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    public static boolean trouve (Set<String> set,String a)
    	{return(set.contains(a));}
    Ce code m'affiche :
    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
     
    ******** Comparaison Classe / Concept **************
    [car, elevator car, truck, motortruck, motorcar]
    [[truck, motortruck]]
    [car, elevator car, truck, motortruck, motorcar]
    [[truck, motortruck], [car, sport car, motorcar]]
    2
     
    ******** Comparaison Classe / Concept **************
    [tape transport, airbusplane, plane, transport, airplane, aeroplane, sledge, transportation]
    [[tape transport, transport, transportation]]
    [tape transport, airbusplane, plane, transport, airplane, aeroplane, sledge, transportation]
    [[tape transport, transport, transportation], [airbusplane, plane, airplane, aeroplane]]
    [tape transport, airbusplane, plane, transport, airplane, aeroplane, sledge, transportation]
    [[tape transport, transport, transportation], [airbusplane, plane, airplane, aeroplane], [sleigh, sledge]]
    3
     
    ******** Comparaison Classe / Concept **************
    [tug]
    [[tugboat, tug]]
    1
     
    ******** Comparaison Classe / Concept **************
    [automobile vehicule, automobile]
    [[automobile vehicule, automobile, auto]]
    1
    alors que je veux qu'il m'affiche ce genre d'affichage :

    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
     
    ******** Comparaison Classe / Concept **************
    [car, elevator car, truck, motortruck, motorcar]
    [[truck, motortruck], [car, sport car, motorcar]]
    2
     
    ******** Comparaison Classe / Concept **************
    [tape transport, airbusplane, plane, transport, airplane, aeroplane, sledge, transportation]
    [[tape transport, transport, transportation], [airbusplane, plane, airplane, aeroplane], [sleigh, sledge]]
    3
     
    ******** Comparaison Classe / Concept **************
    [tug]
    [[tugboat, tug]]
    1
     
    ******** Comparaison Classe / Concept **************
    [automobile vehicule, automobile]
    [[automobile vehicule, automobile, auto]]
    1
    Autrement dit je veux ce que j'ai à la fin, je sais pas comment faire, est ce que c'est une bonne idée d'utiliser tableau ou matrice ??!!

    merci infiniment de m'aider à trouver une solution

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 23/03/2006, 12h39
  2. Réponses: 11
    Dernier message: 22/03/2006, 21h57
  3. problème de comparaison table dans requète.
    Par Sendo dans le forum Access
    Réponses: 8
    Dernier message: 09/03/2006, 11h10
  4. Problème de comparaison (chez lycos)
    Par Tuscelan dans le forum Langage
    Réponses: 4
    Dernier message: 10/11/2005, 18h13
  5. Problème de comparaison de dates
    Par MiJack dans le forum Langage SQL
    Réponses: 2
    Dernier message: 12/03/2004, 21h43

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