Comparer deux tableaux

sss -  
Heliotte Messages postés 1491 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

je compare deux tableaux p et f
si une case de p se trouve dans f alors la variable exist recoit true sinon elle reste faux .
le probleme que ce code ne fonctionne pas il me renvoi toujours faux


boolean  compare (Vector premisses,Vector faits)  
{boolean existe=false; 
     
        int i=0; 
            int j=0; 
   while  ( j<faits.size() &&  i<premisses.size() ) 
 { 
     if( premisses.elementAt(i).equals(faits.elementAt(j))) 
     { i++; 
  
 existe=true; 
     break;} 
        
         
        else  
        j++; 
        }    
     
    return(existe); 
} 






dans le main :


boolean exist=v.compare(p,f);
        if (exist)
        {System.out.println("regle declenchable");}
        else
            System.out.println("regle non declenchable");}
   

2 réponses

Heliotte Messages postés 1491 Date d'inscription   Statut Membre Dernière intervention   92
 
le principe de comparaison est, à mon avis, incorrect.
Algorithme:
Admettons tableaux t1{1, 2, 3} et t2{3, 4, 5}
POUR i = 0; i<TAILLE(t1) ; i++
..POUR j = 0; j<TAILLE(t2) ; j++
....SI t1(i) == t2(j) ALORS
......existe=VRAI;
....FIN SI
..FIN j
FIN i
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Tout simplement avec deux boucles for each :

public static boolean compare(Collection c1, Collection c2) 
{ 
    for (Object o1 : c1) // Pour chaque objet de c1 
    for (Object o2 : c2) // Pour chaque objet de c2 
        if ((o1==null && o2 ==null) || (o1!=null && o1.equals(o2)) 
            return true; 
    return false; 
}

Remarque : j'ai mis Collection, parce que c'est plus général que Vector, ça permettra par exemple de comparer aussi un Vector avec des List, etc.

En toute rigueur, on devrait quand même imposer que les deux Collection aient le même type de donnée, ce qui donne une formulation paramétrée :

public static <E> boolean compare(Collection<E> c1, Collection<E> c2) 
{ 
    for (E e1 : c1) 
    for (E e2 : c2) 
        if ((e1==null && e2 ==null) || (e1!=null && e1.equals(e2)) 
            return true; 
    return false; 
}
La confiance n'exclut pas le contrôle
0
Heliotte Messages postés 1491 Date d'inscription   Statut Membre Dernière intervention   92
 
Merci pour ces précisions KX
Je suis encore apprenti en JAVA
0