Vérifier qu'un mot existe en java

cla10000 -  
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   -
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 ;
}
}
A voir également:

1 réponse

KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   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
cla10000
 
Je ne comprends pas dans cet algorithme, ce qui équivaut à renvoyer false ou true (dsl je suis vraiment débutante ...)
0
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
cla10000 Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
 
quand je met votre proposition et que je compile l'ordi me renvoit :

0
cla10000 Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
 
et également :

0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   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