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

AWT/Swing Java Discussion :

Comparaison de String


Sujet :

AWT/Swing Java

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 8
    Points : 6
    Points
    6
    Par défaut Comparaison de String
    Bonjour tout le monde,

    Voila j'ai un petit soucis, je pense avoir tout essayé mais je ne trouve pas de solution donc je me vois dans l'obligation de venir vous voir.

    Donc mon problème est :

    J'ai un JTable contenant les colonnes suivantes : noms, prénom, sexe, date de naissance...
    Je souhaite compter le nombre de fille et de garçon donc j'ai créer une variable String qui reçoit la valeur de la case ( M ou F ou null). Cela fonctionne car quand j'affiche cette variable en console je vois bien le bon resultat.

    Maintenant je voudrais comparer ce String avec un autre String mais je n'y arrive pas, j'ai toujours des erreurs peu importe ce que j'essaye : je vous joint la fonction qui me pose probleme


    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
     
    public void compter_fille(){
     
    	int fille = 0;
    	int garcon = 0;
    	int nul = 0;
     
    	String mec = "M";
    	String femme = "F";
    	String nule = "null";
     
    	for(int i=0;i<table.getRowCount();i++)
    	{	
    		String test =(String) (table.getValueAt(i,2)); 
    		System.out.print("\ntest : " +test);
     
    		if (test.equals(mec))
    		{
    			garcon++;
    			System.out.println("\ngarcon : " +garcon);
    		}
    		else if (test.equals(femme))
    		{
    			fille++;
    			System.out.println("\nfille : " +fille);
    		}
     
    		else if (test.equals(nule))
    		{
    			nul++;
    		}
    	}
     
     
    }
    J'attends votre aide avec impatience!

    Merci.

  2. #2
    Membre régulier
    Inscrit en
    Janvier 2011
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 51
    Points : 71
    Points
    71
    Par défaut
    Quelle est l'erreur?

  3. #3
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    êtes vous sur que test contient la chaine "null" et pas plutot la valeur null ? Il me semble que votre code devrais plutot être

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if (test==null)
      // indéterminé
    else if (test.equals("M"))
      // M
    else if (test.equals("F"))
      // F
    else
      // indéterminé
    ou, pour faire plus court:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if ("M".equals(test))
      // M
    else if ("F".equals(test))
      // F
    else
      // indeterminé

  4. #4
    Membre averti

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2010
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2010
    Messages : 246
    Points : 402
    Points
    402
    Par défaut
    et à ce propos, vaut_il mieux faire :

    ou

    ?


    Sinon il serait en effet bien de connaitre vos sortie console et votre message d'erreur
    C'est en aidant les autres qu'on en apprend beaucoup soi-même

  5. #5
    Membre régulier
    Inscrit en
    Janvier 2011
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 51
    Points : 71
    Points
    71
    Par défaut
    Ce sont deux traitements différents. Si il y a possibilité que la chaîne soit null, la condition .isEmpty renverra une erreur...

  6. #6
    Membre averti

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2010
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2010
    Messages : 246
    Points : 402
    Points
    402
    Par défaut
    mais justement dans son cas, il instancie un String en lisant la valeur dans la JTable. Si la case de la JTable est vide, il aura donc un String null, et non un Objet null...

    C'est pourquoi il me semble que "isEmpty()" serait ici plus approprié au test justement...
    C'est en aidant les autres qu'on en apprend beaucoup soi-même

  7. #7
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    le typage ne change rien. null c'est null, null n'a pas de type et on appelle pas de méthode sur null, ça déclenche un NullPointerException. Son code n'instancie pas un string. Il fait juste un typecasting.

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    Le problème était bien le null

    Je l'ai résolu quelques minutes après mon post, sachant que le null est seulement à la première ligne de mon JTable je commence ma boucle for pour le test du sexe et je n'ai plus d'erreur

    Je vous remercie quand même de votre aide.

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

Discussions similaires

  1. Comparaison de String avec jokers
    Par kitsune dans le forum Langage
    Réponses: 8
    Dernier message: 22/05/2006, 15h21
  2. pb de comparaison de string
    Par Kpone dans le forum Langage
    Réponses: 2
    Dernier message: 03/03/2006, 23h31
  3. [LG] Comparaison de strings
    Par Pack_of_the_Night dans le forum Langage
    Réponses: 2
    Dernier message: 09/02/2006, 20h58
  4. Réponses: 1
    Dernier message: 24/12/2005, 14h18
  5. [C#] Erreur comparaison de string
    Par Damsou dans le forum ASP.NET
    Réponses: 13
    Dernier message: 11/02/2005, 11h14

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