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 :

Comparaison de chaînes de caractères


Sujet :

avec Java

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    338
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 338
    Points : 192
    Points
    192
    Par défaut Comparaison de chaînes de caractères
    Bonjour,

    Je cherche à comparer des titres.

    Je vérifie si le titre précédent n'est pas le même que l'actuel. S'il est différent, je dois rentrer dans mon if mais ce n'est pas le cas, je rentre même s'il est identique.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     if ((!titre1old.equals(titre1)) || (!titre2old.equals(titre2)) || (!titre3old.equals(titre3)))
      {
           Log.e("log_tag", " 1er condition " +  titre1old + "=" + titre1);
           Log.e("log_tag", " 2eme condition " +  titre2old + "=" + titre2);
           Log.e("log_tag", " 3eme condition " +  titre3old + "=" + titre3);
           passage="";
      }
     
    titre1old= titre1;
    titre2old= titre2;
    titre3old= titre3;
    E/log_tag(19596): 1er condition =pour 1 lire
    E/log_tag(19596): 2eme condition =pour 2 lire
    E/log_tag(19596): 3eme condition =pour 3 lire

    E/log_tag(19596): 1er condition pour 1 lire=pour 1 lire
    E/log_tag(19596): 2eme condition pour 2 lire=pour 2 lire
    E/log_tag(19596): 3eme condition pour 3 lire=pour 3 lire

    E/log_tag(19596): 1er condition pour 1 lire =pour 1 lire
    E/log_tag(19596): 2eme condition pour 2 lire=pour 2 lire
    E/log_tag(19596): 3eme condition pour 3 lire=pour 3 lire

    E/log_tag(19596): 1er condition pour 1 lire=pour 1 lire
    E/log_tag(19596): 2eme condition pour 2 lire=pour 2 lire
    E/log_tag(19596): 3eme condition pour 3 lire=pour 3 lire
    Quelqu'un saurait-il m'expliquer ce qui se passe ?

    Merci d'avance pour votre aide.

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Peut-être des espaces ou des caractères invisibles.

    Je n'ai pas ce problème, tu peux nous montrer un exemple du début à la fin du static void main() ?
    Pas des pages, hein, un truc court, on veut juste voir ce qui montre le problème, le reste ça nous intéresse pas.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    338
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 338
    Points : 192
    Points
    192
    Par défaut
    Je vais essayer de faire simple.
    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
    33
    34
    35
    36
    37
    38
    39
     
    //on prepapre la requete
     String reqtitre = " SELECT * FROM titre t where t.id_titre = "+id_titre+" ;"; 
     //on initialise le cursor 
     Cursor FomBDDtitre=null;
    //on execute la requete est on alimente le cursor
    FomBDDtitre = bddtp.rawQuery(reqtitre,null);
     //on prepapre a la lecture
    Titre titre = new Titre();
    //on verifie que la requete a bien renvoyer quelque chose
    if(FomBDDtitre != null)
    {
    //on va a la premiere colonne du cursor
    FomBDDtitre.moveToFirst();
     
    //on lit le cursor
    for (int a = 0; a < FomBDDtitre.getCount(); a++)  
    { 	
    //on lui affecte toutes les infos grâce aux infos contenues dans le Cursor
    valeur1 = titre.setVALEUR1 (FomBDDtitre.getString(1));
    titre1= titre.setTITRE1 (FomBDDtitre.getString(2));
    valeur2 = titre.setVALEUR2 (FomBDDtitre.getString(3));
    titre2 = titre.setTITRE2 (FomBDDtitre.getString(4));
    valeur3 = titre.setVALEUR3 (FomBDDtitre.getString(5));
    titre3 = titre.set TITRE3(FomBDDtitre.getString(6));
    FomBDDtitre.moveToNext();
    }
    //Si le titre est déjà écrit alors je n'affiche que les valeurs sinon j'affiche les titres + les valeur
    if ((!titre1old.equals(titre1))|| (!titre2old.equals(titre2))|| (!titre3old.equals(titre3)))
    {
       donnees.add(new Objet(groupe, "", titre1, titre2, titre3));
     
    }
    donnees.add(new Objet(groupe, libelle, valeur1, valeur2, valeur3));
    titre1old=titre1;
    titre2old=titre2;
    titre3old=titre3;
    FomBDDSStitre.moveToNext();
    }
    Le but de l'affichage est :
    |titre1 | titre2 | titre3

    libelle |valeur1 | valeur2 |valeur3
    libelle |valeur1 | valeur2 |valeur3

    Mais le titre peut ne correspond pas toujours a la valeur donc on le rajoute une ligne avec son titre ex :
    |titre1 | titre2 | titre3

    libelle |valeur1 | valeur2 |valeur3
    libelle |valeur1 | valeur2 |valeur3
    |titre1 | titre2 | titre3

    libelle |valeur1 | valeur2 |valeur3

    Ce code fonctionne bien mais quand ma variable titre1 ='pour 1 lire' ou titre2='pour 2 lire' ou titre3='pour 3 lire' equals ne doit pas être adapté.

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Citation Envoyé par xouzi Voir le message
    Je vais essayer de faire simple.
    Et je t'avais dit comment faire : juste le public static void main(), court, avec juste ce qu'il faut pour voir le problème.
    Pourquoi as-tu fait autre chose que ça ?

    Nous ne pouvons pas deviner tout ce que font tes trucs et tes machins. Ça ne sert à rien.

    Enfin, je soupçonne que titre1, titre2, titre3 etc ne sont pas des String, n'est-ce pas ? Dans ce cas, en effet, il est possible que equals() ne fonctionne pas comme ça.
    Pour y remédier, il faudrait déjà qu'on sache ce que c'est, si c'est pas des String.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    338
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 338
    Points : 192
    Points
    192
    Par défaut
    titre1, titre2, titre3 sont bien des string.
    J'ai revérifié directement dans ma bdd si les champs étaient bien identique ce qui été le cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * from titre t where t.libelle_titre = "pour 1 lire";
    j'ai quand même fais un update pour être sur que j'avais la même chose et depuis je n'ai plus le problème.

  6. #6
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Citation Envoyé par xouzi Voir le message
    titre1, titre2, titre3 sont bien des string.
    J'ai revérifié directement dans ma bdd si les champs étaient bien identique ce qui été le cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * from titre t where t.libelle_titre = "pour 1 lire";
    Si ça avait été une question de caractères invisibles, tu n'aurais pas été plus avancé -_-°. Il aurait fallu faire conversion hexa ou base64 et comparer ça.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comparaison de chaînes de caractères
    Par bam14 dans le forum Cobol
    Réponses: 3
    Dernier message: 27/08/2007, 10h13
  2. comparaison de chaînes de caractères
    Par Jasmine80 dans le forum Langage
    Réponses: 17
    Dernier message: 27/07/2007, 09h47
  3. Réponses: 3
    Dernier message: 16/05/2007, 14h41
  4. [MySQL] Problème de comparaison de chaîne de caractères
    Par Laurent64 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 15/05/2007, 19h04
  5. [Excel-VBA] Pb de comparaison de chaîne de caractères
    Par tangjuncn dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/02/2007, 12h50

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