Donc voila j'essaye encore et toujours de faire un dictionnaire a partir d'un arbre n-aire en java normalement il est fini mais les mots ne s'ajoute pas, j'ai fait une méthode d'affichage qui affiche un truc bizarre, si quelqu'un peut m'expliquer ce qui ne fonctionne pas merci beaucoup.
voici le code :
le fichier de test :
public class Test_Dico {
public static void main (String[] args){
Lecture_Fichier Lec = new Lecture_Fichier("Lexique.txt");
// test de reccup
System.out.println("test de reccup : " + Lec.getChaine().get(22));
Dico dico = new Dico();
String trie = Trie(Lec.getChaine().get(22));
System.out.println(trie);
dico.Ajoute_Mot(new Fils(trie.charAt(0)), trie);
trie = Trie(Lec.getChaine().get(34));
System.out.println(trie);
dico.Ajoute_Mot(new Fils(trie.charAt(0)), trie);
dico.Afficher_Arbre(dico.GetFirst());
}
public static String Trie(String e){
String ret = "";
int i=0, j=0;
while(i<1){
if(e.charAt(j) == '$'){
i++;
}else{
if(i>=0){
ret += e.charAt(j);
}
}
j++;
}
return ret;
}
}
le dico avec les methodes d'ajout et d'affichage :
public class Dico {
/*** Attributs ***/
Fils First;
/*** Constructeurs ***/
public Dico(){
this.First = new Fils('$');
}
/*** Getters et Setters ***/
public Fils GetFirst(){
return this.First;
}
/*** Methodes ***/
public void Ajoute_Mot(Fils f, String mot){
/**
* La methode ajoute mot ajoute un mot dans l'arbre grammatical de manière récursive
* **/
if(!mot.isEmpty()){
if(f.Get_Fils().isEmpty()){
f.Get_Fils().add(new Fils(mot.charAt(0)));
String tmp = "";
for(int i=1;i<mot.length();i++){
tmp += mot.charAt(i);
}
Ajoute_Mot(f.Get_Fils().get(0),tmp);
}else{
int j=0;
while((f.Get_Fils().get(j).Get_Name() != mot.charAt(0))&&(j<f.Get_Fils().size())){
if(f.Get_Fils().get(j).Get_Name() == mot.charAt(0)){
String tmp = "";
for(int i=1;i<mot.length();i++){
tmp += mot.charAt(i);
}
Ajoute_Mot(f.Get_Fils().get(j),tmp);
}
j++;
}
f.Get_Fils().add(new Fils(mot.charAt(0)));
String tmp = "";
for(int i=1;i<mot.length();i++){
tmp += mot.charAt(i);
}
Ajoute_Mot(f.Get_Fils().get(0),tmp);
}
}
}
public void Afficher_Arbre(Fils f){
if(f.Get_Fils().isEmpty()){
System.out.println(f.Get_Name() + ".");
}else{
for(int i=0;i<f.Get_Fils().size();i++){
System.out.print(f.Get_Name());
Afficher_Arbre(f.Get_Fils().get(i));
}
}
}
}
et enfin le fichier qui contient les Fils :
import java.util.ArrayList;
public class Fils {
/*** Attributs ***/
char name;
ArrayList<Fils> fils;
/*** Constructeurs ***/
public Fils(char name){
this.name = name;
fils = new ArrayList<Fils>();
}
/*** Getters et Setters ***/
public char Get_Name(){
return this.name;
}
public ArrayList<Fils> Get_Fils(){
return this.fils;
}
/*** Methodes ***/
public boolean Rechercher_Lettre(char e){
if(this.fils.size() == 0){
return false;
}else{
for(int i=0;i<this.fils.size();i++){
if(this.fils.get(i).Get_Name() == (e)){
return true;
}
}
return false;
}
}
public void Ajout_Lettre(char e){
this.fils.add(new Fils(e));
}
}
oui c'est exactement ca ! mais comme tu peut le voir ca ne fonctionne pas a cause de la fonction d'ajout de mot principalement.
Arbre n-aire ajout de mot
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.