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 :

Comment modifier le séparateur par defaut appelé par la méthode printf ?


Sujet :

avec Java

  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    En cours de reconversion
    Inscrit en
    Février 2022
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : En cours de reconversion
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2022
    Messages : 2
    Par défaut Comment modifier le séparateur par defaut appelé par la méthode printf ?
    Bonjour.
    Je suis novice++ en java et je tente doucement de me former...
    Après avoir suivit un tuto sur les différents format de printf, je me suis aperçu que mon séparateur de groupage affiche le caractère '?'.
    C'est d'ailleurs ce qu'il affiche aussi pour Maths.PI, donc si j'ai bien compris, ma police par défaut n'est pas UNICO... c'est un autre pb (quye je ne sais pas non
    Voici le code de base :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    int price = 1_234_567_890; 
    System.out.println( "Exemple d'affichage de nombres selon la localisation : ");
    System.out.printf( "Affichage par defaut : %,d\n", price );
    System.out.printf( new Locale( "fr", "FR" ), "Affichage France : %,d\n", price );   
    System.out.printf( new Locale( "en", "US" ), "Affichage USA : %,d\n", price );   
    System.out.printf( new Locale( "it", "IT" ), "Affichage Italie : %,d\n", price );
    Qui m'affiche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Affichage par defaut : 1?234?567?890
    Affichage France : 1?234?567?890
    Affichage USA : 1,234,567,890
    Affichage Italie : 1.234.567.890
    Je sais que ce code marche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    DecimalFormat format = new DecimalFormat(); // c'est pas necessaire de mettre 3 blocs mais je me rappelle plus la syntaxe exacte
    DecimalFormatSymbols s = format.getDecimalFormatSymbols();
    s.setGroupingSeparator(' ');
    format.setDecimalFormatSymbols(s);
    int number = 123456789;
    System.out.println(format.format(number));
    Mais ici format.format(number) est un string.
    Ma question est : comment modifier le setGroupingSeparator pour que, en tapant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    int price = 1_234_567_890;
    System.out.printf( Locale.getDefault(), "Affichage par défaut : %,d\n", price );
    j'ai bien 1 234 567 890 ou 1*234*567*890 qui soit affiché à ma gise quand j'utilise la fonction printf avec l'option %,
    s.setGroupingSeparator(' ') modifie l'objet DecimalFormatSymbols mais comment rattacher cet objet à Locale.getDefault() ?
    J'ai relut la javadoc , mais je ne suis pas assez allaise pour réussir à trouver la réponse...
    https://docs.oracle.com/javase/8/docs/api/index.html
    Et pour ne pas paraitre ridicule, je ne dirais pas depuis combien de temps je bloque la dessus...
    Dans l'attente de vos conseils et en vous remerciant

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 578
    Par défaut
    Hello,

    je n'ai pas l'impression que format() offre cette flexibilité.

    Il vaut mieux convertir toi-même tes nombres en String de la manière qui te convient, puis utiliser cette String dans le format().
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Nouveau candidat au Club
    Homme Profil pro
    En cours de reconversion
    Inscrit en
    Février 2022
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : En cours de reconversion
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2022
    Messages : 2
    Par défaut
    Ok, merci.
    En faite, quand j'ai suivis le tuto sur printf, j'ai été amené à télécharger une archive de fichiers java pour Eclipse (pour gagner du temps et ne pas avoir à tout retaper à la mains), et c'est là que j'ai vu le pb de police pas unicode (toutes les lettres accentuées étaient représenté sur 2 caractères avec des symboles peu connu comme é) mais il m'a suffit de les rechanger à la main pour corriger le pb.
    Je pensais donc pour faire pareil pour printf et rechanger le GroupingSeparator en quelques lignes pour ne plus afficher le ?.

    Bon à l'usage (dans un cadre pro), je ne sais pas si c'est important ou pas de savoir bien manipuler printf ou les formats d'affichage.

Discussions similaires

  1. Réponses: 1
    Dernier message: 21/09/2006, 13h15
  2. Comment modifier l'utilisateur par défaut au démarrage de XP SP2 ?
    Par zemeilleurofgreg dans le forum Windows XP
    Réponses: 8
    Dernier message: 13/09/2006, 23h56
  3. Réponses: 2
    Dernier message: 03/08/2006, 16h24
  4. Réponses: 4
    Dernier message: 04/10/2005, 00h07

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