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

Langage Java Discussion :

retour de la méthode split de la classe String


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2007
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 27
    Par défaut retour de la méthode split de la classe String
    Bonjour,
    cela fait plusieurs fois que je tombe sur ce problème. J'ai essayé de le contourner à chaque fois, mais là ce n'est plus possible.
    Voici ce que fais mon renderer :
    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
    public Component getTableCellRendererComponent(
                JTable table, Object value, boolean isSelected,
                boolean hasFocus, int row, int column) {
            if (table == null || !(value instanceof String) || (value == null) )  {
                return this;
            }
     
            String renderedValue=null;
            String val[] = new String[2];
            val = ((String) value).split(","); 
     
            System.out.println("value = " + value);
            System.out.println("val[0] = " + val[0]);
            System.out.println("val[1] = " + val[1]+"\n");
     
            if(value==null) System.out.println("value est nulle");
            if(value.equals(""))  System.out.println("value est vide");
            if(val==null) System.out.println("val = null");
            if(val[0] == null) System.out.println("val[0] = null");
     
            if (val[1].charAt(0) != '0') {   
                 //traitements
            }
            else {
                //traitements
                }
           return super.getTableCellRendererComponent(
                        table, renderedValue, isSelected, hasFocus, row, column);
            }
    Mon problème, c'est qu'il n'y a rien dans value apparemment, donc le split ne fonctionne pas, et mets rien dans val[0], tandis que val[1] n'est pas affecté. Le résultat du println me donne
    value =
    val[0] =

    Ce que j'aimerai, c'est trouver un test à faire sur value pour dire que si il n'y a rien dedans, je ne fais rien, et sinon je fais mon split. Or d'après mes tests, value n'est pas null et value n'est pas vide, sinon, cela aurait été affiché dans la console.
    Merci d'avance pour votre aide.

  2. #2
    Membre éprouvé
    Avatar de _skip
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Novembre 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 898
    Par défaut
    A peu près ce que t'as fait :

    if( str == null || str.trim().length < 1)
    ....

    Parce que si str vaut null et qu'une ligne plus bas tu utilises equals dessus, ça va cramer, c'est clair....

  3. #3
    Membre averti
    Inscrit en
    Novembre 2007
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 27
    Par défaut
    Euh, merci de ta réponse, mais je ne la comprends pas vraiment. c'est qui ton "str" ? Est-ce que c'est mon value (qui représente ce qu'il y en dans la case de ma JTable), ou est-ce que c'est mon val[] qui reçoit le résultat du split?
    De plus, le trim, ça enlève bien les espaces, pourquoi on vérifie donc que ma chaine sans espace soit de longueur supérieure à 1 ? Pourquoi ne pas faire ça sur la chaine elle même?
    J'espère que je suis assez claire.

  4. #4
    Membre averti
    Inscrit en
    Novembre 2007
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 27
    Par défaut
    Ah ça y est, c'est bon, le test à faire, c'est est-ce que val[0] est vide. En fait, il ne passait pas dans les cas que j'avais testé pour savoir si c'était ull ou vide, à cause de l'appel à val[1] dans le println. c'est lui qui faisait foirer le reste.
    Merci de m'avoir mis sur la voie.

  5. #5
    Membre éprouvé
    Avatar de _skip
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Novembre 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 898
    Par défaut
    str c'était ton value oui.
    si ton value vaut null, un value.split provoquera une erreur, je trouve ça beaucoup plus propre de tester si une valeur en entrée est utilisable plutot que de tester si le *résultat* d'une opération sur cette valeur l'est....

  6. #6
    Membre averti
    Inscrit en
    Novembre 2007
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 27
    Par défaut
    oui je me suis moi-même embrouillée avec mes variables; C'était mon value qui était vide et non pas mon value[0]. Tout est ok maintenant.
    Merci.

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 15/11/2012, 12h16
  2. La méthode hashCode() de la classe String
    Par Nayila dans le forum Langage
    Réponses: 2
    Dernier message: 02/11/2007, 22h13
  3. La méthode equals() de la classe String
    Par Nayila dans le forum Langage
    Réponses: 5
    Dernier message: 31/10/2007, 13h09
  4. Réponses: 4
    Dernier message: 10/04/2007, 16h26
  5. [Reflection] Exécuter une méthode donnée d'une classe
    Par schousso dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 03/06/2004, 10h35

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