Liste Chainée en Java

Discussion dans 'Programmation' créé par Pe|i, 22 Novembre 2006.

  1. Pe|i

    Pe|i Green heart ^.^

    J'aime reçus:
    501
    Points:
    113
    Salam drari,
    J'ai besoin de votre aide afin d'implémenter une fonction qui cherche un mot clé dans un texte.
    Pour ce faire, j'ai pensé aux listes chainée (ArrayList) afin de manipuler le texte, mais ca marche pas :(
    Si quelque'un a une idée, qu'il la propose svp
    Je vous remercie infiniment

     
  2. sadalif

    sadalif Visiteur

    J'aime reçus:
    105
    Points:
    0
    Re : Liste Chainée en Java

    aleikoum salam,

    En java il existe une multitude de fonctions facilitant la vie, surtout pour la manipulation de chaîne. D'apres ce que j'ai compris tu recherches une sous-chaîne dans une grande chaîne...
    exemple tu cherches "sad" Dans "rak bogoss a sadalif walah"...

    la methode indexOf() de String (voir http://www.ccim.be/ccim328/js/string.htm)
    Elle te renvoie la position du premier endroit où se trouve ta sous-chaine. (exemple précedent: 13)
    Elle renvoie -1 si la chaine ne s'y trouve pas.

    class forAnonymous{

    public static Boolean chouf3afakWachKayn(String texte, String chaine){
    return new Boolean(texte.indexOf(chaine) != -1);
    }
    public static void main(String args[])
    {
    String s = "rak bogoss a sadalif walah";
    String s1 = "sad";

    System.out.println((chouf3afakWachKayn(s, s1)).toString());

    }
    }



    J'espere avoir pu t'aider. :)
     
  3. Pe|i

    Pe|i Green heart ^.^

    J'aime reçus:
    501
    Points:
    113
    Re : Liste Chainée en Java

    Merci khouya SadAlif pour ton aide.

    Mais cette fonction suppose que le texte se trouve deja dans des liste (ArrayList) et c'est justement ca que j'arrive pas a faire. Cad, décomposer un texte en liste de strings :(
     
  4. h@kim

    h@kim Guest

    Re : Liste Chainée en Java

    public class text{
    private arraylist<string>text

    public text(string t) {
    text =new ArrayList<String>();
    }
    public string gettext(string t){
    return null;
    }
    public void memorizeText (string text) {

    text.add(text)
    }
    }
    }

    j'ai fait le java en allemnad et j'ai essayer de traduire quelques mots! j'espère que j'ai bien compris ta demande!
     
  5. sadalif

    sadalif Visiteur

    J'aime reçus:
    105
    Points:
    0
    Re : Liste Chainée en Java

    anonymous:

    ton texte il est dans un fichier??
     
  6. Pe|i

    Pe|i Green heart ^.^

    J'aime reçus:
    501
    Points:
    113
    Re : Liste Chainée en Java

    Oui, mon texte est dans un fichier .txt et la clé est dans un autre fichier .txt (dictionnaire)

    Merci khouya h@kim
     
  7. sadalif

    sadalif Visiteur

    J'aime reçus:
    105
    Points:
    0
    Re : Liste Chainée en Java

    ok en fait juste faut juste modifier la fonction en haut et faire comme ça:

    public static Boolean chouf3afakWachKayn(String nomFicherTexte, String nomFichierchaine){

    try{
    //recuperation de la clé
    InputStream ipsCle=new FileInputStream(nomFicherChaine);
    InputStreamReader ipsrCle=new InputStreamReader(ipsCle);
    BufferedReader brCle =new BufferedReader(ipsrCle);
    String cle = brCle.readLine();

    //recuperation du texte
    InputStream ips=new FileInputStream(nomFicherTexte);
    InputStreamReader ipsr=new InputStreamReader(ips);
    BufferedReader br=new BufferedReader(ipsr);
    String ligne;
    while ((ligne=br.readLine())!=null){
    if(ligne.indexOf(cle) != -1){
    return new Boolean(true);
    }
    }
    br.close();
    }
    catch (Exception e){
    System.out.println(e.toString());
    }
    }
     
  8. sadalif

    sadalif Visiteur

    J'aime reçus:
    105
    Points:
    0
    Re : Liste Chainée en Java

    a oups ne pas oublier les imports:

    import java.io.*;
     
  9. Pe|i

    Pe|i Green heart ^.^

    J'aime reçus:
    501
    Points:
    113
    Re : Liste Chainée en Java

    Sir allah yjawjek a khouya SadAlif [:Z]
     
  10. sadalif

    sadalif Visiteur

    J'aime reçus:
    105
    Points:
    0
    Re : Liste Chainée en Java

    amine wa li jami3 chabab al mouslimine :)

    à ton service khouya
     
  11. h@kim

    h@kim Guest

    Re : Liste Chainée en Java

    merci khay sad minkoum nastafid [:Z]
     
  12. Pe|i

    Pe|i Green heart ^.^

    J'aime reçus:
    501
    Points:
    113
    Re : Liste Chainée en Java

    Merci toi aussi khouya h@kim ^^
    Allah yzawjek ta nta ;)
     
  13. Pe|i

    Pe|i Green heart ^.^

    J'aime reçus:
    501
    Points:
    113
    Re : Liste Chainée en Java

    Ca marche pas a khouya Sadalif :-(
    J'ai changé de statégie, je vais cette fois utiliser la méthode StreamTokenizer.
    En fait, je prend mon texte et j'en crée un flux de données
    Code:
    adressedufichier = System.getProperty("user.dir") + "\\text.txt";
          
    		fr = new FileReader(adressedufichier);
    		br = new BufferedReader(fr);
    		st = new StreamTokenizer(br) <----------------------------------
    
    Donc ca va créer des Tokens a partir de mon texte, ce que je cherche alors, c'est de spliter le texte selon les espaces et les endline et apres de mettre tout ca dans un tableau de String !!
    L'ami google m'a donné des propositions mais en fait a chaque fois, je vois que l'utilisation de
    Code:
    StringTokenizer sst = new StringTokenizer(" bla bla bla");
    
    est indisponsable, mais le probleme c'est que la méthode StringTokenizer prend comme argument un string et pas un flux :(

    Si t'as une idée de comment faire, aide moi a khouyan rah je suis dans la merde :(
     
  14. sadalif

    sadalif Visiteur

    J'aime reçus:
    105
    Points:
    0
    Re : Liste Chainée en Java

    a khouya pour que je puisse t'aider dis moi juste qu'est ce que tu veux faire exactement et pourquoi tu as besoin de tokeniser?
    Donne moi le sujet exact de ce que tu dois faire. :)
    ma ikoun gha khatrek, en plus je suis au boulot si c'est vraiment compliqué je pourrais demandé à des pros
     
  15. Pe|i

    Pe|i Green heart ^.^

    J'aime reçus:
    501
    Points:
    113
    Re : Liste Chainée en Java

    Merci khouya Sadalif,
    Regarde tes MP, je t'ai laissé mon adresse msn, comme ca je t'enverrai les fichiers de mon projet et toutes les explications
     
  16. Pe|i

    Pe|i Green heart ^.^

    J'aime reçus:
    501
    Points:
    113
    Re : Liste Chainée en Java

    T'as téléchargé les fichiers .java ??
     
  17. sadalif

    sadalif Visiteur

    J'aime reçus:
    105
    Points:
    0
    Re : Liste Chainée en Java

    Oui je l'ai reçu. Je regarde ce qu'on peut faire...
    à priori tu as déjà tout ce qui te faut :)

    lis mon mp et réponds moi vite.
     
  18. Pe|i

    Pe|i Green heart ^.^

    J'aime reçus:
    501
    Points:
    113
    Re : Liste Chainée en Java

    l'exemple a la fin du fichier lireetecrire.java est juste un exemple de Tokenizer que j'avais essayé

    Code:
    int idx = 0; 
    	int tokenCount;
    	String words[] = new String [500];
    	String message="The text of the message to be broken up for analysis";
    	StringTokenizer sst = new StringTokenizer(message);
    	tokenCount = sst.countTokens();
    	System.out.println("Number of tokens = " + tokenCount);
    	while (sst.hasMoreTokens()) // make sure there is stuff to get
        { words[idx] = sst.nextToken(); idx++; }
    	for (idx=0;idx<tokenCount; idx++)
        { System.out.println(words[idx]); }
    
    ne le prend pas en compte :)
     
  19. sadalif

    sadalif Visiteur

    J'aime reçus:
    105
    Points:
    0
    Re : Liste Chainée en Java

    Voici la fonction pour passer de Stream à List c'est un peu baclé mais ça marche !!
    Tu peux la parcourir ensuite avec un iterator...

    public static List StreamToList(StreamTokenizer entree){
    List l = new LinkedList();
    String nom = "";
    int type;
    try {
    while (entree.nextToken() != StreamTokenizer.TT_EOF) {
    nom = entree.sval;
    type = entree.nextToken();
    if (type == StreamTokenizer.TT_WORD) {
    l.add(entree.sval);
    }
    }
    } catch (IOException e) {
    // TODO Bloc catch auto-généré
    e.printStackTrace();
    }
    return l;
    }

    Mon main si tu veux pas te fatigué, j'ai teste chez moi ça marche!

    Code:
    import java.io.*;
    import java.util.LinkedList;
    import java.util.List;
    
    class test {
    	
    	public static List StreamToList(StreamTokenizer entree){
    		List l = new LinkedList();
    		String nom = "";
    		int type;
    		try {
    			while (entree.nextToken() != StreamTokenizer.TT_EOF) {
    				nom = entree.sval;
    				type = entree.nextToken();
    				if (type == StreamTokenizer.TT_WORD) {
    					l.add(entree.sval);
    				}
    			}
    		} catch (IOException e) {
    			// TODO Bloc catch auto-généré
    			e.printStackTrace();
    		}
    		return l;
    	}
    	
    	
    	public static void main(String[] argv) throws IOException {
    		List l = null;;
    
    		StreamTokenizer entree = new StreamTokenizer(new BufferedReader ( new FileReader ("C:\\workspace\\tajineBiElBar9ou9\\AtayBiNa3Na3\\Bastilla.txt")));
    		l = StreamToList(entree);
    		
    		System.out.println("le texte est "
    				+ l.toString());
    	}
    }
     
  20. sadalif

    sadalif Visiteur

    J'aime reçus:
    105
    Points:
    0
    Re : Liste Chainée en Java

    ah au fait comme tu m'as dis que tu allaais récupérer des noms je ne prend que les noms qui se trouve dans le fichier :D
    Si ça pose probleme il suffira de changer ce test:
    if (type == StreamTokenizer.TT_WORD) {

    ici on ne prend pas les "," ; les mots entre"" comme "coco", etc... à toi d'adapter pour trouver les bonnes chaînes...
     

Partager cette page