IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Recherche dans une table : impossible de récupérer une saisie


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 2
    Par défaut Recherche dans une table : impossible de récupérer une saisie
    Bonjour,

    J'aimerais solliciter votre aide pour résoudre un dysfonctionnement de mon code Java. Voici le résultat que je souhaite obtenir :

    1. L'utilisateur entre un prénom pour savoir si ce dernier figure dans un tableau (prédéfini dans le code).

    2. Si le résultat est positif, le script lui indique la position dans le tableau du prénom.

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    import java.io.*;
     
    class chap5_recherche {
      public static void main(String[] args) {
        String [] tab={"jean","pierre","paul","jack"};
        int i=0;
        String txt="";
        boolean trouve=false;
        BufferedReader saisie;
     
        saisie=new BufferedReader(new InputStreamReader (System.in));
        try{
          System.out.println("Entrez le prenom recherche :");
          txt=saisie.readLine();
        }
        catch (Exception excp) {
          System.out.println("Erreur");
        }
     
        while(i<tab.length && !trouve) {
        	    if(tab[i]==txt) trouve=true;
        	    i++;
        }
     
        if(trouve) System.out.println("Trouve a la position "+(i-1));
        else System.out.println("Ce nom ne figure pas dans la liste !");
      }
    }
    Lors de la compilation je n'ai pas d'erreur. Par contre, le script ne récupère pas ce que je saisi et me retourne à chaque fois "Ce nom ne figure pas dans la liste".

    Merci d'avance pour votre aide !

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 265
    Par défaut
    Bonjour,

    tout d'abord ton if ne fonctionne pas, tu compares une chaine, tu récupères la valeur i en sortie de boucle et non la position dans le tableau du champ trouvé, et le "&& !trouve", à mon avis, ne sert pas à grand chose dans l'état.

    Peut être que cela peut t'aider :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    while (i < tab.length) {
        if (tab[i].equals(txt)){
            trouve = true;
    	break;
    	}
         i++;
    }
     
    if (trouve)
        System.out.println("Trouve a la position " + (i));

  3. #3
    Membre éprouvé Avatar de dev_2007
    Profil pro
    Inscrit en
    Août 2007
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2007
    Messages : 98
    Par défaut
    Voila, ton code modifié et qui donne le résultat souhaité

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    import java.io.*;
     
    class chap5_recherche {
      public static void main(String[] args) {
        String [] tab={"jean","pierre","paul","jack"};
        int i=0;
        String txt="";
        boolean trouve=false;
        BufferedReader saisie;
     
        saisie=new BufferedReader(new InputStreamReader (System.in));
        try{
          System.out.println("Entrez le prenom recherche :");
          txt=saisie.readLine();
        }
        catch (Exception excp) {
          System.out.println("Erreur");
        }
     
        while(i<tab.length && !trouve) {
        	    if(tab[i].equals(txt)){ 
        	    	trouve=true;
        	    break;
        	    }else
        	    	i++;
        }
     
        if(trouve) System.out.println("Trouve a la position "+(i));
        else System.out.println("Ce nom ne figure pas dans la liste !");
      }
    }
    Le principe est quasiment simple, dans ton while une fois tu trouve l'élément recherché alors tu mets ton boolean à true puiske quitter la boucle puiske ça ne sert à rien de continuer à chercher, d'ou le break.

    les tableaux sont indexés à partir de 0 donc ton (i-1) donnera toujours la position - 1 de ton élément dans la tableau si trouvé, d'ou aussi le i au lieu de i-1.

    voilou voilou.

  4. #4
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 2
    Par défaut
    Merci pour vos deux réponses ultra rapide ! C'est parfait.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 265
    Par défaut
    Et si vraiment tu tiens à utiliser "!trouve" dans le test, il te faudra réaffecter la valeur "false" à la variable "trouve" à un moment ou un autre.

    Quand au "else" dans la boucle, je ne suis pas trop sûr de sa raison d'être.

  6. #6
    Membre éprouvé Avatar de dev_2007
    Profil pro
    Inscrit en
    Août 2007
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2007
    Messages : 98
    Par défaut
    déjà la variable trouve est bien initialisée au moment de sa déclaration à false
    Donc si le test abouti alors trouve aura comme valeur true si non il sera tout le temps à false.

    Pour le "else" je suis d'accord avec toi de sa présence puisque le break fait l'affaire au cas ou on rentre dans la boucle si non on incrémente le i pour passer à l'élément suivant.

Discussions similaires

  1. [AC-2010] Impossible de supprimer une table, un formulaire ou une requête
    Par leonnikita dans le forum Access
    Réponses: 4
    Dernier message: 25/03/2014, 18h39
  2. Réponses: 16
    Dernier message: 20/05/2011, 20h12
  3. Réponses: 6
    Dernier message: 15/06/2010, 03h18
  4. [MySQL] Récupérer une table et redirection vers une page
    Par ph_anrys dans le forum PHP & Base de données
    Réponses: 22
    Dernier message: 20/03/2007, 16h44
  5. [MySQL] Recherche dans la table impossible
    Par tonguim dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 02/05/2006, 22h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo