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

Java Discussion :

Définition d'une constante de caractère vide


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Septembre 2008
    Messages
    234
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 234
    Par défaut Définition d'une constante de caractère vide
    Salut,

    Suivant certains conseils j'utilise des constantes au lieu d'utiliser des valeurs explicites dans mon code. Par exemple :

    private static final String chaineVide = "";

    Toutefois, en ce qui concerne les caractères, il semblerais que l'absence d'une valeur n'est pas acceptée par le compilateur :

    private static final char charVide = '';
    private static final Character charVide = '';

    Est-ce possible de contourner ca ou dois-je utiliser un espace pour symboliser un caractère vide ?

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 764
    Par défaut
    Citation Envoyé par Jimalexp Voir le message
    Toutefois, en ce qui concerne les caractères, il semblerais que l'absence d'une valeur n'est pas acceptée par le compilateur :
    private static final char charVide = '';
    private static final Character charVide = '';
    Est-ce possible de contourner ca ou dois-je utiliser un espace pour symboliser un caractère vide ?
    Qu'appelles-tu un caractère vide ?
    Que comptes-tu en faire ?

  3. #3
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Par défaut
    bonjour,

    sinon tu peut toujours utiliser la valeur min d'un char :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    private static final char charVide = Character.MIN_VALUE;
    Il n'y a pas de problème, il n'y a que des solutions.
    Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
    Si toutefois le problème persiste, la seule solution restante est de changer le périphérique qui se trouve entre la chaise et l'écran

    Mes Articles : Mon premier article est sur le language D
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre confirmé
    Inscrit en
    Septembre 2008
    Messages
    234
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 234
    Par défaut
    Citation Envoyé par Astartee Voir le message
    Qu'appelles-tu un caractère vide ?
    Que comptes-tu en faire ?
    L'utiliser à la place d'une comparaison en "dur", du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    char entree;
     
    lecteur = new Scanner(System.in);
     
    lecteur.nextLine().charAt(0);
     
    if( entree != '' )
    faireQuelqueChose();
    Peut être un \n ferais l'affaire ? Je ne sais pas à quel caractère corresponds Character.MIN_VALUE.

  5. #5
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Par défaut
    cela correspond à la valeur la plus petite d'un char soit '\u0000'
    Il n'y a pas de problème, il n'y a que des solutions.
    Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
    Si toutefois le problème persiste, la seule solution restante est de changer le périphérique qui se trouve entre la chaise et l'écran

    Mes Articles : Mon premier article est sur le language D
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre confirmé
    Inscrit en
    Septembre 2008
    Messages
    234
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 234
    Par défaut
    En supposant que ce caractère ne corresponde pas à l'alphabet latin en unicode, ca pourrais faire l'affaire. Je vais aussi tester le contenu d'un char après lecture pour voir à quoi correspondrais un simple retour à la ligne.

    Merci pour les suggestions.

  7. #7
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Par défaut
    c'est la valeur null du char
    Il n'y a pas de problème, il n'y a que des solutions.
    Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
    Si toutefois le problème persiste, la seule solution restante est de changer le périphérique qui se trouve entre la chaise et l'écran

    Mes Articles : Mon premier article est sur le language D
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #8
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 764
    Par défaut
    Citation Envoyé par Jimalexp Voir le message
    L'utiliser à la place d'une comparaison en "dur", du genre :
    Et ça marche, ça ?

  9. #9
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 280
    Par défaut
    Citation Envoyé par Astartee Voir le message
    Et ça marche, ça ?
    Si entree est du type char, oui bien sur, pourquoi ?

    ---
    Farid

  10. #10
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 764
    Par défaut
    Bah parce que j'ai essayé et que curieusement (oupa?) Eclipse m'envoie chier, même après être passée en Java 5...
    Et puis je n'ai pas réussi à trouver d'indications sur le net concernant la signification de cette expression (j'ai pas cherché trop longtemps non plus, hein).

    Enfin, si c'est censé marcher, suffit de savoir ce que fait cette expression pour pouvoir remplacer dans la déclaration de charVide le '' par la valeur explicite représentée par '' dans la dite expression...
    D'après les réponses précédentes il s'agirait donc de '\u0000' ? L'expression (entree != '') est équivalente à (entree != '\u0000') ? Et c'est récent, pour que ma version d'Eclipse (3.1.2) ne connaisse pas cette syntaxe ?

  11. #11
    Membre confirmé
    Inscrit en
    Septembre 2008
    Messages
    234
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 234
    Par défaut
    Citation Envoyé par Astartee Voir le message
    Et ça marche, ça ?
    Il y a des chances que non :p . Mais, si c'est les cas, c'est dommage de constater un manque de symmétrie entre caractère et chaîne. Enfin, on me diras qu'une châine est un ensemble de caractères et que la possibilité de tester si elle est "vide" se justifie alors que l'absence d'un char signifie qu'il n'y a pas de char tout simplement.

    P.S: J'ai peut être commis un abus aussi. En effet, j'utilise un autre langage qui fais la distinction entre les types en utilisant deux ' à la place de deux ".

  12. #12
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 764
    Par défaut
    Citation Envoyé par Jimalexp Voir le message
    Il y a des chances que non :p
    Ouh là, j'ai cru que c'était moi qui étais à la ramasse sur une expression que je ne connaissais pas, mais en fait toi non plus tu ne sais pas vraiment de quoi tu parles
    Donc je reviens à ma question : que cherches-tu à faire ? Quand tu as écrit (entree != '') sans savoir si c'était possible, à quoi pensais-tu ?

    Citation Envoyé par Jimalexp Voir le message
    c'est dommage de constater un manque de symmétrie entre caractère et chaîne. Enfin, on me diras qu'une châine est un ensemble de caractères et que la possibilité de tester si elle est "vide" se justifie alors que l'absence d'un char signifie qu'il n'y a pas de char tout simplement.
    Je ne vois pas du tout pourquoi il faudrait une "symétrie" entre caractère et chaîne de caractères Un caractère, c'est un 'a', c'est un '9', c'est un '¤', c'est espace, c'est un retour à la ligne, c'est un autre caractère spécial que je ne saurais pas représenter mais qui correspond bien à une valeur, ça ne peut pas être "vide". Une chaîne de caractère c'est un ensemble de caractères, qui peut contenir 0 caractère, et alors on dit qu'elle est "vide".

    Quand tu dis "l'absence d'un char signifie qu'il n'y a pas de char tout simplement", faut-il comprendre que dans ton test tu cherchais à savoir si un caractère était présent à la 0-ième place dans la chaîne lecteur.nextLine() ? Dans ce cas ta méthode ne peut pas fonctionner.
    En effet, lorsque tu effectues lecteur.nextLine().charAt(0) :
    - soit il n'y a pas de ligne à lire, et donc nextLine va lever une NoSuchElementException, et tu n'arriveras jamais à ton test...
    - soit il y a une ligne à lire, mais cette ligne (chaîne de caractère) est vide, et donc charAt va lever une IndexOutOfBoundsException, et tu n'arriveras jamais à ton test...
    - soit il y a une ligne à lire, et cette ligne (chaîne de caractère) comprend au moins un caractère, et alors entree prendra la valeur de ce caractère (qui correspondra forcément à "quelque chose")

  13. #13
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 22
    Par défaut confusion
    peut-être que vous confondez caractères blancs et chaîne vide

Discussions similaires

  1. Réponses: 4
    Dernier message: 08/03/2010, 09h57
  2. Ma DLL retourne une chaine de caractère vide.
    Par alain8550 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 31/01/2010, 16h28
  3. Définition d'une constante
    Par Nabouille dans le forum Access
    Réponses: 4
    Dernier message: 14/01/2008, 09h57
  4. Tester une chaîne de caractères vide (débutant)
    Par Virtual78 dans le forum Langage
    Réponses: 5
    Dernier message: 15/11/2007, 16h11
  5. Réponses: 2
    Dernier message: 07/11/2007, 08h44

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