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

Android Discussion :

Comportement de String bizarre


Sujet :

Android

  1. #1
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut Comportement de String bizarre
    Bonjour,

    Sur Android (2.3.3)

    J'ai ce bout de code qui fait planter l'application (Java.Lang.NullPointerException)

    ==> crash
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    		String title = "";
    		if(title.isEmpty() == false)
    		{
    ==> crash
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    		String title = null;
    		if(title.isEmpty() == false)
    		{
    ==> OK
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    		String title = "toto";
    		if(title.isEmpty() == false)
    		{
    Je ne comprends pas pourquoi

    Merci d'avance à celui qui saura m'aider
    PS : débutant en Java et avec Android, alors pas taper trop fort...
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  2. #2
    Membre extrêmement actif
    Avatar de Ryu2000
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    9 605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 9 605
    Points : 18 523
    Points
    18 523
    Par défaut
    Essai un truc dans le genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if(title == null || title.equals("")){
         // Null ou vide t'es sensé arriver là dedans
    }
    Si je ne dis pas de connerie, ça va d'abord tester si title est null, si c'est le cas on entre dans le if et on test pas la 2ième condition.
    Si title n'est pas null, on test si elle est equals à "".
    Keith Flint 1969 - 2019

  3. #3
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Points : 5 072
    Points
    5 072
    Par défaut
    De mon côté, IntelliJ me dit que cette méthode String.isEmpty n'est même pas accessible Ô_Ô
    Je suis pourtant bien en 1.6 (version d'introduction de cette méthode).

    Accessible du côté d'Eclipse, mais vu que le mien est un gros veau ... je ne peux même pas plus tenter que ça -_-'
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  4. #4
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    Bon !?!?

    Je viens de remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    		if(title.isEmpty() == false)
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    		if( (title != null) && (title.equals("") == false) )
    et cela marche.

    C'est quoi l'explication rationnelle de cette magie, la fonction isEmpty() de la classe String que j'utilise est moisie ?

    C'est pas avec des trucs comme cela que je vais apprendre

    Je mets en mais j'aimerais tout de même une explication (s'il y en a une).
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  5. #5
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2006
    Messages : 35
    Points : 47
    Points
    47
    Par défaut
    Bonjour.
    Dans tous les cas, même si la fonction isEmpty marchait correctement tu aurais du faire un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(title != null && (title.isEmpty() == false))
    Pour le cas des chaines vide "", faudrait revoir le fonctionnement des affectations dans android.

    Cdt

  6. #6
    Membre extrêmement actif
    Avatar de Ryu2000
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    9 605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 9 605
    Points : 18 523
    Points
    18 523
    Par défaut
    Cette méthode doit très rarement être utilisé.
    Apparemment elle est sensé retourner TRUE si la length est égal à 0.

    Par contre string == null et string.equals("") c'est très utilisé.
    Keith Flint 1969 - 2019

  7. #7
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Points : 5 072
    Points
    5 072
    Par défaut
    D'ailleurs, pour éviter la double vérification null ET chaîne vide, il est plus pratique de faire :
    La méthode equals ayant une vérification de "null"-ité.
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

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

Discussions similaires

  1. comportement boucle for bizarre
    Par maccormick dans le forum Général Java
    Réponses: 9
    Dernier message: 22/09/2010, 14h07
  2. comportement CSS ultra bizarre
    Par saimonesays dans le forum Mise en page CSS
    Réponses: 7
    Dernier message: 27/03/2010, 21h22
  3. comportement d'affectation bizarre
    Par Ardeciel dans le forum C
    Réponses: 10
    Dernier message: 02/01/2008, 15h11
  4. Comportement d'impression bizarre
    Par Mad Ant dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 22/03/2007, 09h40
  5. Un String Bizarre
    Par YanK dans le forum Langage
    Réponses: 6
    Dernier message: 07/02/2003, 11h05

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