Vérifier qu'un mot existe en java

Fermé
cla10000 - Modifié le 12 janv. 2019 à 19:54
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 - 12 janv. 2019 à 23:34
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 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
12 janv. 2019 à 20:06
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
Je ne comprends pas dans cet algorithme, ce qui équivaut à renvoyer false ou true (dsl je suis vraiment débutante ...)
0
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 vendredi 14 décembre 2018 Statut Membre Dernière intervention 12 janvier 2019
12 janv. 2019 à 20:27
quand je met votre proposition et que je compile l'ordi me renvoit :

0
cla10000 Messages postés 7 Date d'inscription vendredi 14 décembre 2018 Statut Membre Dernière intervention 12 janvier 2019
12 janv. 2019 à 20:29
et également :

0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
12 janv. 2019 à 21:35
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