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 :

Je ne comprends pas cette fonction : Character.digit


Sujet :

Java

  1. #1
    Membre expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 886
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 886
    Points : 3 725
    Points
    3 725
    Par défaut Je ne comprends pas cette fonction : Character.digit
    Salut,

    Je ne comprends pas cette fonction : Character.digit

    J'ai essayé ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public class MyClass
    {
        public static void main(String[] args)
        {
     
            System.out.println(Character.digit('B', 16));
        }
    }
    J’obtiens ce résultat "11" mais je ne comprends pas, je m'attendais à "42" car le caractère 'B' a pour code Unicode u+0042.

    Merci.

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Cette méthode, comme l'explique la javadoc, est censée retourner la valeur numérique (en base 10 forcément, puisque du int) du caractère passé en premier argument exprimé dans la base passé en second arguement.


    Dans ton test, les paramètres que tu passes correspondent à la règle :

    The character is one of the uppercase Latin letters 'A' through 'Z' and its code is less than radix + 'A' - 10. In this case, ch - 'A' + 10 is returned.
    Donc ça retourne 11 ( 'B'-'A' + 10 ). En base 16, B vaut bien 11. Comme, par exemple, Character.digit('F',16) donne 15, F valant bien 15 en base 16).

    Mais Character.digit('F',12) donne -1 : la règle appliquée est
    if the value of ch is not a valid digit in the specified radix
    En effet, 'F' n'a aucun sens en base 12 (les signes qu'on utilse vont de 0 à B, Character.digit('B', 12) donnant bien 11).


    Pour avoir la valeur que tu attendais, il fallait faire : System.out.println(Integer.toString('B',16)); ou System.out.println(Integer.toHexString('B'));.

  3. #3
    Membre expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 886
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 886
    Points : 3 725
    Points
    3 725
    Par défaut
    + 1 et résolu.

    Merci pour l'explication détaillée, donc ça n'avait rien à voir avec le code point Unicode...

    Merci pour la solution.

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 560
    Points : 21 622
    Points
    21 622
    Par défaut
    En même temps, digit ça veut dire chiffre...

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

Discussions similaires

  1. Je ne comprends pas cette fonction
    Par pierrot10 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 26/01/2012, 09h56
  2. [PHPExcel] Comprend pas cette écriture ?
    Par a028762 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 05/07/2009, 15h07
  3. Je ne comprends pas cette ligne de code
    Par beegees dans le forum C++
    Réponses: 17
    Dernier message: 13/05/2008, 11h02
  4. Comprend pas cette commande SED
    Par DIE dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 05/10/2006, 13h58
  5. [Boolean]Je ne comprend pas cette instruction
    Par jcachico dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 13/01/2006, 16h25

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