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 :

Le programme ne rentre jamais dans mon "if" sur une chaîne de caractères


Sujet :

avec Java

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2018
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2018
    Messages : 171
    Points : 55
    Points
    55
    Par défaut Le programme ne rentre jamais dans mon "if" sur une chaîne de caractères
    Bonjour,

    J'essaye de recuperer seulement une partie de ma chaine de caractere pour la stocker dans un tableau.

    J'ai le code suivant:
    Code JAVA : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     String[] str_frame = str_data.split("=>");
    	    int frame_length=str_frame.length;
    		for(int i=1;i<frame_length;i++){
    			int array_frame_length = str_frame[i].length();
    			//System.out.println(str_frame[i]);
    			System.out.println(array_frame_length);
    			System.out.println(str_frame[i].substring(array_frame_length-3,array_frame_length));
    			if(str_frame[i].substring(array_frame_length-3,array_frame_length)=="<= ")
    			{
    				System.out.println("OK");
    			}
    		}

    J'entre des donnees de ce type:
    => 160718,105950,Lat:50.102778,Long:14.393270,NbSat:9,Alt:267,T1:120.520157 <=
    => 160718,110021,Lat:50.102806,Long:14.393231,NbSat:9,Alt:261,T1:120.358986 <=
    => 160718,110052,Lat:50.102817,Long:14.393177,NbSat:7,Alt:258,T1:121.728928 <=
    => 160718,110123,Lat:50.102765,Long:14.393217,NbSat:9,Alt:264,T1:120.358986 <=
    J'obtiens le resultat suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    77
    <= 
    77
    <= 
    77
    <= 
    76
     <=
    J'aimerais savoir pourquoi je n'obtiens pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    77
    <=
    OK 
    77
    <=
    OK 
    77
    <=
    OK 
    76
     <=
    Merci pour vos reponses

  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
    Hello,

    en Java pour comparer des objets on utilise la méthode equals(). On n'utilise pas l'opérateur == qui sert à vérifier si deux variables pointent vers le même objet, ou si une variable pointe vers null.

    Or les String sont des objets. Tu ne peux pas faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(maString == "<= ") { // C'EST UN BUG !!!!
    tu dois faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(maString.equals("<= ")) {
    ... Bon et aussi, je vérifierais s'il faut vraiment mettre un espace après le <=
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2018
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2018
    Messages : 171
    Points : 55
    Points
    55
    Par défaut
    Salut, merci pour ta reponse.

    Maintenant j'ai ecrit cela:
    Code JAVA : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    String[] str_frame = str_data.split("=>");
    	    int frame_length=str_frame.length;
    		for(int i=1;i<frame_length;i++){
    			int array_frame_length = str_frame[i].length();
    			//System.out.println(str_frame[i]);
    			System.out.println(array_frame_length);
    			System.out.println(str_frame[i].substring(array_frame_length-2,array_frame_length));
    			if((str_frame[i].substring(array_frame_length-2,array_frame_length)).equals("<="));
    			{
    				System.out.println("OK");
    			}
    		}

    Cependant le .equals ne semble pas fonctionner car peu importe ce que j'ecris, il me retourne tout le temps la longueur de la chaine, les deux derniers caracteres et OK. Or moi je ne veux ecrire OK que si les deux derniers caracteres sont "<=".

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,


    1. Citation Envoyé par tengalice49 Voir le message
      il me retourne tout le temps la longueur de la chaine
      Normal. Parce que System.out.println(array_frame_length);

    2. Citation Envoyé par tengalice49 Voir le message
      les deux derniers caracteres
      Normal. Parce que System.out.println(str_frame[i].substring(array_frame_length-2,array_frame_length));.

    3. Citation Envoyé par tengalice49 Voir le message
      Or moi je ne veux ecrire OK que si les deux derniers caracteres sont "<="
      Ce qui est fait par :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      if(str_frame[i].substring(array_frame_length-2,array_frame_length).equals("<=") ) {
      	System.out.println("OK");
      }
      Remarque que tu pourrais écrire simplement :

      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      if(str_frame[i].endsWith("<=")) {
      	System.out.println("OK");
      }
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2018
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2018
    Messages : 171
    Points : 55
    Points
    55
    Par défaut
    Salut, merci de ta reponse, mais quand j'ecrivais cela:
    Cependant le .equals ne semble pas fonctionner car peu importe ce que j'ecris, il me retourne tout le temps la longueur de la chaine, les deux derniers caracteres et OK. Or moi je ne veux ecrire OK que si les deux derniers caracteres sont "<=".
    Je savais tres bien pourquoi il me retournait la longueur et les deux derniers caracteres, ce qui m'etonne c'est qu'il me retourne OK peu importe ce que j'ecris dans ma chaine.

    Par exemple si ma chaine de caractere est "=> ceci est un test", le programme me renvoie:

    17
    st
    OK
    Donc cette ligne a un probleme:
    Code JAVA : Sélectionner tout - Visualiser dans une fenêtre à part
    if((str_frame[i].substring(array_frame_length-2,array_frame_length)).equals("<="));

    Cependant, en utilisant cette ligne, le programme fonctionne correctement:
    Code JAVA : Sélectionner tout - Visualiser dans une fenêtre à part
    if(str_frame[i].endsWith("<=")) {

    Merci pour ton aide, par contre je ne comprends pas ce qui ne va pas avec la methode .equals()

  6. #6
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,

    Il y a un point-virgule à la fin de ton if...
    Donc ce dernier ne fait rien et l'instruction suivante est exécutée dans tous les cas.

  7. #7
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2018
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2018
    Messages : 171
    Points : 55
    Points
    55
    Par défaut
    Arf oui quel idiot Merci...

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

Discussions similaires

  1. Performance sur traitement de chaine de caracteres
    Par Paniez dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 11/03/2014, 14h25
  2. traitement de chaines de caracteres
    Par mrtatou dans le forum Langage
    Réponses: 14
    Dernier message: 18/01/2006, 15h43
  3. [debutant][traitement de chaine de caractere]
    Par hash92 dans le forum Langage
    Réponses: 3
    Dernier message: 14/12/2005, 15h53
  4. fonctions de traitements de chaines de caracteres
    Par jerem001_5 dans le forum C
    Réponses: 19
    Dernier message: 24/11/2005, 20h47
  5. Cherche fonction de traitement de chaine de caractere
    Par DeezerD dans le forum Langage
    Réponses: 1
    Dernier message: 10/09/2005, 14h41

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