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 :

string demandé avec un char


Sujet :

avec Java

  1. #1
    Membre régulier
    Inscrit en
    Décembre 2008
    Messages
    483
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 483
    Points : 105
    Points
    105
    Par défaut string demandé avec un char
    Bonjour,

    j'ai une fonction qui demande une variable de type "string", et je veux lui donner une variable de type "char".

    J'ai alors fais comme d'habitude un : toString();

    mais voici l'erreur :

    char cannot be dereferenced
    C'est surement une erreur de débutant mais voilà je reste bloqué la dessus

    merci

  2. #2
    Membre averti Avatar de clubist
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2008
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2008
    Messages : 217
    Points : 301
    Points
    301
    Par défaut
    Bonjour,

    toString retourne la présentation en string d'un objet et pas de type primitif comme char

    pour avoir le String d'un tableau de char vous veuillez instancier un objet de type String et passer comme paramètre à son constructeur un tableau de char
    ou bien utiliser la méthode valueOf

    par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    char data[] = {'a', 'b', 'c'};
    String str = new String(data);
    System.out.println("transformation avec constructeur : "+str);
    //ou bien essayer valueOf
     
    String ch = String.valueOf(data);
    System.out.println("transformation avec la méthode valueOf : "+ch);

  3. #3
    Membre régulier
    Inscrit en
    Décembre 2008
    Messages
    483
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 483
    Points : 105
    Points
    105
    Par défaut
    merci ça marche

    par contre j'aimerai faire exactement la même chose avec un float, et la méthode ne marche pas pour un float justement

  4. #4
    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,



    Chaque type primitif possède une classe Wrapper associée, qui dispose de toutes les méthodes utiles...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    char c = 'c';
    float f = 1.0f;
     
    String cStr = Character.toString(c);
    String fStr = Float.toString(f);
    // etc.

    Maintenant pour les nombres si tu veux un formatage plus spécifique il faudra passer par un DecimalFormat ou bien via String.format()...

    a++

  5. #5
    Membre régulier
    Inscrit en
    Décembre 2008
    Messages
    483
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 483
    Points : 105
    Points
    105
    Par défaut
    merci à toi

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 342
    Points : 419
    Points
    419
    Par défaut
    c'est peut être moins beau pour vous mais moi j'utilise l'opérateur + de la class string qui fait très bien la chose

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    char c = 'c';
    float f = 1.0f;
     
    String cStr = ""+c;
    String fStr = ""+f;

  7. #7
    Membre chevronné
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Points : 1 806
    Points
    1 806
    Par défaut
    On ne dit pas "c'est moins beau", on dit "c'est horrible". Le + est à éviter dans les String, autant que faire se peut.

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    338
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 338
    Points : 402
    Points
    402
    Par défaut
    Citation Envoyé par rolfone Voir le message
    c'est peut être moins beau pour vous mais moi j'utilise l'opérateur + de la class string qui fait très bien la chose

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    char c = 'c';
    float f = 1.0f;
     
    String cStr = ""+c;
    String fStr = ""+f;
    Ton truc fonctionne mais n'est pas optimale car quand tu fais
    le compilateur le transforme en:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     new StringBuffer().append("").append(c).toString();
    Tu as les méthode String.valueOf() qui prend tout type de paramètres

  9. #9
    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
    Citation Envoyé par Rei Ichido Voir le message
    On ne dit pas "c'est moins beau", on dit "c'est horrible".
    Le ""+ est un petit hack pas forcément très joli... mais pas bien méchant non plus.

    Citation Envoyé par Rei Ichido Voir le message
    Le + est à éviter dans les String, autant que faire se peut.
    Non il n'est pas à éviter !!!
    Il est simplement à utiliser pour ce dont il est conçu, c'est à dire générer une concaténation d'élément pour générer une chaine simple en une instruction unique.

    Par contre il faut éviter de l'utiliser pour générer une chaine complexe sur plusieurs instructions, en particulier en cas de boucle. Il y a les StringBuffer/StringBuilder pour cela !

    a++

  10. #10
    Membre chevronné
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Points : 1 806
    Points
    1 806
    Par défaut
    C'était ce que j'exprimais, certes de façon sommaire, mais globalement quand on a une méthode faite pour, autant éviter de recourir à une autre méthode qui a des inconvénients, non ?

  11. #11
    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
    Non.

    En aucune circonstance il ne faut écrire l'abominable

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new StringBuilder().append(name).append('=').append(value).toString()
    au lieu du clair et concis :

    lorsqu'il n'y a que ça à faire.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  12. #12
    Membre chevronné
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Points : 1 806
    Points
    1 806
    Par défaut
    Et pourtant tu crées un StringBuffer en rabe ; alors certes si c'est effectué une fois de temps (typiquement, dans les exceptions), ce n'est pas dramatique.
    Mais quand ça devient une habitude, que ça apparait au milieu de boucles effectuées à gogo, et que ça porte sur une dizaine de concaténation, ça devient nettement plus gênant.

    Personnellement je ne vois pas ce que l'utilisation des ".append" a d'abominable, ça reste lisible et on sait ce qu'on fait.

  13. #13
    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 Rei Ichido Voir le message
    Et pourtant tu crées un StringBuffer en rabe ;
    Pas le moins du monde, le compilateur est plus intelligent que ça. Mais du coup je comprends pourquoi tu croyais cela.

    Citation Envoyé par Rei Ichido Voir le message
    alors certes si c'est effectué une fois de temps (typiquement, dans les exceptions), ce n'est pas dramatique.
    Mais quand ça devient une habitude, que ça apparait au milieu de boucles effectuées à gogo, et que ça porte sur une dizaine de concaténation, ça devient nettement plus gênant.
    C'est à éviter dans les cas où le compilateur ne peut pas le détecter lui-même, et que le traitement de concaténation est lourd et/ou répétitif.

    Mais on s'éloigne du cas général.

    Citation Envoyé par Rei Ichido Voir le message
    Personnellement je ne vois pas ce que l'utilisation des ".append" a d'abominable, ça reste lisible et on sait ce qu'on fait.
    Ça ne reste pas lisible, non. Et on ne sait ce qu'on fait que pendant le court moment où on est en train de le construire. À la relecture ça prend un temps monstre à comprendre ce qui se fait.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  14. #14
    Membre chevronné
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Points : 1 806
    Points
    1 806
    Par défaut
    Mhhhh je reste dubitatif sur la lecture. Probablement une question d'habitude.

    Cela dit je veux bien admettre que quand la concaténation est faite en une instruction, le compilateur dans un éclair de génie n'itère pas la construction de buffers - ça semble plutôt rationnel.

  15. #15
    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
    Citation Envoyé par Rei Ichido Voir le message
    Cela dit je veux bien admettre que quand la concaténation est faite en une instruction, le compilateur dans un éclair de génie n'itère pas la construction de buffers - ça semble plutôt rationnel.
    Le compilateur fait cela très bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String str = name + '=' + value;
    Sera bien compilé comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String str = new StringBuilder().append(name).append('=').append(value).toString();
    Sur une instruction unique il est donc inutile d'utiliser StringBuilder/append().
    Cela peut même être contre-productif en cas d'utilisation de constante, qui peuvent être concaténer dès la compilation...

    a++

  16. #16
    Membre régulier
    Inscrit en
    Décembre 2008
    Messages
    483
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 483
    Points : 105
    Points
    105
    Par défaut
    merci pour ces précisions

    Sinon, j'ai une petite question et je préfère la poser ici plutôt que de créer un nouveau sujet pour ça...

    Je cherche l'évènement pour un liste déroulante (combobox) lorsque l'on choisit un item dans la liste, j'aimerai ensuite afficher des choses.

    Mais j'ai essayé la plupart des évènements et je ne trouve pas

  17. #17
    Membre averti Avatar de clubist
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2008
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2008
    Messages : 217
    Points : 301
    Points
    301
    Par défaut votreComboBox.addActionListener(this)
    Bonjour,

    1- bon Tout d'abord, votre classe JFrame ou JPanel doit implémenter l'interface action listener.

    2- ajouter la méthode addActionLestener à votre comboBox.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    votreConboBox.addActionListener(this)
    2- Vous veuillez ajouter l'action listener par l'implémentation de la méthode actionPerformed de l'interface ActionListener

    remarque : cette méthode doit etre redéfinie dans la meme classe ou vous avez ajouté la méthode AddActionListener(this) à votre combobox
    c'est un bout de code de la création d'un listener à votre comboBox
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    public void actionPerformed(ActionEvent e) {
            JComboBox cb = (JComboBox)e.getSource();
     
    //Récupérer l'Item sélectionné        
    String nomItemSelectionne = (String)cb.getSelectedItem();
     
    // faire içi votre traitement en fonction de item sélectionné
    ...        
        }
    bon chance

  18. #18
    Membre régulier
    Inscrit en
    Décembre 2008
    Messages
    483
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 483
    Points : 105
    Points
    105
    Par défaut
    mince il n'y a pas plus simple ?

    Je sais pas, il y a une 20aine d'évènement (je travaille avec NetBeans) pour les combobox, et il n'y en a pas un seul pour l'action de choisir un item dans la liste?

    En fait je dois réaliser une gestion (de clients par exemple), alors au début j'ai tenté de manipuler les jTable, mais il s'avère que cela est un peu compliqué avec les modèles etc, je me suis alors dis pourquoi pas trier dans une combobox...

  19. #19
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 342
    Points : 419
    Points
    419
    Par défaut
    tien j'ai bien fait de donné ma solution car j'ai appris pas mal de truc merci pour les précisions apportées.

    sinon pour ce qui est des évènement c'est bien comme dit si dessus.

    sous netbeans double cliques sur ta combobox et netbeans vas crée tout ce qu'il faut (pas très pédagogique par contre) et tu code la ou il vas te mettre le curseur.

    l'évènement est déclenché par un clique sur la liste de la combobox si je ne me trompe pas et tu peut récupérer l'élément sélectionné

  20. #20
    Membre régulier
    Inscrit en
    Décembre 2008
    Messages
    483
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 483
    Points : 105
    Points
    105
    Par défaut
    non ce n'est pas le bon évènement

    tout ce qui était implicite en VB ne l'est pas du tout en java, et c'est vraiment agaçant

Discussions similaires

  1. [DOM] Document XML au format String avec encodage char spéc. xml
    Par kij dans le forum Format d'échange (XML, JSON...)
    Réponses: 0
    Dernier message: 23/10/2008, 15h04
  2. [C#]String.Format avec un Array
    Par backseatgreg dans le forum C#
    Réponses: 11
    Dernier message: 27/11/2005, 17h22
  3. [String]Formatter avec local
    Par EpOnYmE187 dans le forum Langage
    Réponses: 4
    Dernier message: 19/09/2005, 21h40
  4. découper un string par rapport à un char
    Par yarf dans le forum C++
    Réponses: 4
    Dernier message: 09/12/2004, 17h52
  5. Réponses: 6
    Dernier message: 24/07/2003, 12h39

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