Vérifier qu'un mot existe en java

cla10000 -  
KX Messages postés 19031 Statut Modérateur -
Bonjour,
Je suis en train de réaliser pour faire le mot motus, seulement je suis débutante en java et j'ai donc plusieurs problèmes ... Ici mon problème, c'est que j'ai codé une fonction existenceMOT() censée vérifier si le mot donné par l'utilisateur existe ou non, sachant que les mots existants sont stockés dans le tableau t, MAIS ma fonction envoie toujours false, et jamais true, même quand le mot existe ... et je ne trouve pas mon erreur. Merci donc d'avance de votre aide.

import java.io.*; 

public class existenceMOT {
 
 public static boolean existenceMOT(String a) {
  String [] t = new String [22739] ;
  int l = 0 ;
  String ligne ;
  try { 
   BufferedReader in = new BufferedReader(new FileReader("liste_francais(2).txt")); 
   ligne = in.readLine() ;
   while((ligne=in.readLine())!=null) {
    
    t[l] = ligne ;
    l=l+1 ;
   }
   in.close(); 
  }
  catch(FileNotFoundException err){
   System.out.println( "Erreur :le fichier n’existe pas!\n "+err);
  }
  catch (IOException err){
   System.out.println(" Erreur :\n "+err);
  }
  
  
  // PROBLEEEEEEEEEEEEEEEEEEEEEEEME //
  while (l<22739)  {
   int z=0;
   String b=t[l];
   l=l+1;
    if (b.length() == a.length()) {
     for (int i=0 ; i<a.length() ; i++ ) {
      if(b.charAt(i)==a.charAt(i)) {
      z++;
      }
     }
    if (z==a.length()){
     return true ;
    }
       
  
   
    }
 }
  return false ;
}
}

1 réponse

  1. KX Messages postés 19031 Statut Modérateur 3 020
     
    Bonjour,

    On peut (énormément) simplifier ton problème.

    public static boolean existenceMot(String str) throws IOException {
        return Files.readAllLines(new File("liste_francais(2).txt").toPath()).contains(str);
    }
    0
    1. cla10000
       
      Je ne comprends pas dans cet algorithme, ce qui équivaut à renvoyer false ou true (dsl je suis vraiment débutante ...)
      0
    2. cla10000
       
      Sachant que cette fonction apparaît dans notre classe principale, qui est la suivante :


      public class Jeu {
       
       public static void main (String[] args) {
        boolean continuer=true; // Boucle qui fait tourner le jeu tant que le joueur ne l'arrete pas (non utilisé pour l'instant). 
        boolean selection=false; // Definit si un mot existe ou non.
        int chance=6; // Nombre de chance totale autorisée, a redefinir plus tard avec une boite de dialogue si besoin
        boolean victoire=false; // Variable instancié a faux, devient vrai si les mots a trouver et proposer sont identiques. 
        
        //sélection du mot mystere au tout début (hors boucle pour n'en prendre qu'un unique) 
        String mot=dictionnaire.mot(); // On affecte à la variable mot la valeur retournée par la fonction mot de la classe dictionnaire. 
        System.out.println(mot); // Affichage provisoire du mot mystere pour les tests (à supprimer plus tard). 
        
        //while ((chance!=0)||(victoire=false)){     // Boucle inutilisé actuellement, définit les essais restant.
         
         //Boucle de saisie du mot par l'utilisateur
         while (selection != true){ //
          String MOT=Dialogue.Mot(); //Affectation de la chaîne de caractère retournée par la fonction mot de la classe dialogue à la variable MOT.
          System.out.println(MOT); // Systeme d'affichage provisoire pour vérifier si la boite de dialogue joue bien son role. 
          
          selection=existenceMOT.existenceMOT(MOT); //Affectation de la nouvelle valeur de seletion par le biais du retour de la fonction existenceMOT de la classe existenceMOT.
          System.out.println(selection);
          if (selection==false) { //Boucle qui diminue le nombre d'essai restant si jamais le mot n'existe pas
           chance--;
          }
         }
         
        //}
         
       }
      }
      0
    3. cla10000 Messages postés 7 Statut Membre
       
      quand je met votre proposition et que je compile l'ordi me renvoit :

      0
    4. cla10000 Messages postés 7 Statut Membre
       
      et également :

      0
    5. KX Messages postés 19031 Statut Modérateur 3 020
       
      Ce qui renvoie
      true
      ou
      false
      c'est la méthode contains.

      Tu pourrais commencer ta classe Jeu comme ceci :

      import java.io.File;
      import java.nio.file.Files;
      import java.util.List;
      
      public class Jeu {
          public static void main(String[] args) throws Exception {
              List<String> mots = Files.readAllLines(new File("liste_francais(2).txt").toPath());

      Puis faire ta condition
      selection = mots.contains(MOT);
      0