Trouver un mot dans un dico JAVA

Résolu/Fermé
Meline_ - Modifié le 27 déc. 2018 à 23:16
 Meline_ - 28 déc. 2018 à 13:34
Bonjour,

Je travaille sur un programme où il faut saisir un mot et ensuite dire si il fait partie du dictionnaire (un fichier txt que l'on ouvre grâce à une méthode toute faite donnée et qu'on a pas le droit de toucher). Il nous est interdit d'utiliser les Arrays donc là je bloque un peu.
J'essaie donc de transformer mon mot (qui doit être mis sous forme de tableau de char après avoir été saisi) en un String afin d'utiliser des méthodes de cette classe seulement voilà, la méthode qui permet de récupérer le dictionnaire implique un tableau de char à deux dimensions et tout ce que j'essaie foire parce qu'on ne peut pas comparer un String à un tableau à deux dimensions (contenant des milliers de mots).

Comment puis-je faire pour trouver un String dans un char[ ][ ] ? C'est un cours pour les tous débutants en JAVA et on nous bloque sur plein de choses, je suis un peu perdue...

Je vous mets le morceau de code que j'ai fait (il est bien sûr erroné) pour vous montrer que j'essaie, et je vous mets le morceau de code contenant la fameuse méthode toute faite pour récupérer le dictionnaire. A savoir que le prof nous a dit mot pour mot que nous n'avions pas besoin de comprendre ce que faisait le code, juste à le coller pour qu'il fonctionne.

Si vous pouviez m'aider ce serait fantastique parce que je veux bien chercher et tout mais faire sans comprendre je ne veux pas, merci d'avance :)

    //méthode pour chercher dans le dico le mot saisi au clavier//
    public static void comparer (char[][]dico, char[]mot){
        String copie = new String(mot);
        boolean trouve = false;
        for (int i = 0; i<dico.length; i++){
          for (int j = 0; j<dico[i].length; j++){
            if (dico.contains(copie)){
            trouve = true;
            break;
          }          
        }
        if (!trouve) {
          System.out.println("Votre mot ne fait pas partie du dictionnaire");
        }
          } 
    }

     //méthode faite par le prof pour récupérer le dictionnaire//
     public static char[][] getDictionnaire(){
        char[][] res;
        char[][] temp = new char[500000][];
        int nbMots = 0;
        try {
          FileReader fr = new FileReader("dico_nfa031.txt");
          BufferedReader br = new BufferedReader(fr);
          String ligne = br.readLine();
          while(ligne != null){
            temp[nbMots] = ligne.trim().toCharArray();
            nbMots++;
            ligne = br.readLine();
          }
          br.close();
        }
        catch(FileNotFoundException e){
          String str = "Fichier dico_nfa031.txt non trouvé";
          throw new RuntimeException(str);
        }
        catch(IOException e){
          String str = "Problème à la lecture du fichier";
          throw new RuntimeException(str);
        }
        res = new char[nbMots][];
        for (int i=0; i<nbMots; i=i+1){
          res[i]=temp[i];
        }
        return res;
    }
Configuration: Windows / Firefox 64.0

1 réponse

KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
27 déc. 2018 à 23:27
Bonjour,

Le code du prof est particulièrement moche, j'espère que c'est volontaire et que jamais on ne vous apprendra à lire un fichier comme ça, il ne faut surtout pas s'en inspirer ou essayer de le comprendre.

Ici on t'impose un format char[] il faut donc oublier les String (uniquement pour l'exercice) et faire tes comparaisons un caractère à la fois.

La double boucle for est intéressante, mais tu n'utilises pas j... Il faudrait que tu comprennes ce que représentent dico[i] et dico[i][j] afin d'en déduire un lien avec le char[] mot que tu cherches.
1
Bonjour et merci beaucoup de m'avoir répondu !
C'est quand même bien ce qui me semblait même en tant que débutante, ce code est bizarre ^^
En tout cas grâce à ton aide j'ai forcé le jeu sur la boucle et j'ai réussi !
Merci encore :)
0