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éfinir une chaine caractère d'un montant négative


Sujet :

Java

  1. #1
    Membre régulier Avatar de Zalawy
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2013
    Messages : 137
    Points : 99
    Points
    99
    Par défaut définir une chaine caractère d'un montant négative
    Bonjour à tous,

    Je voudrais ajuster un montant négatif à gauche. Par exemple, un chiffre la chaine positif s'affiche "000021737", l'affichage du montant positif ne pose pas de problème. Mais pour le nombre négatif, je dois définir "-00021737" avec Pad droit. J'ai du mal à afficher pour la chanine du montant négatif. Je me suis renseigné sur les guides en ligne mais c'est très flou.
    J'espère que mes explications sont bien claires. Merci à l'avance!
    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
     
    	private static void afficherunmontant(String valeur, int taille) {
    			if (valeur.length() > taille){
    				valeur = valeur.substring(0, taille);
    				System.out.println(valeur); ////pour visualiser la valeur
    			} else if (valeur.length() < taille) {
    			valeur = valeur.substring(1, taille);
    			 System.out.println(valeur); //pour visualiser la valeur
    			}
    		   StringUtils.righPad(valeur, taille);
    	}
     
    	public static void main(String[] args) {
     
    	 String valeur = "-00000000021737"
    	 afficherunmontant(valeur, 9);
     
    	}

  2. #2
    Membre averti
    Homme Profil pro
    Architecte technique
    Inscrit en
    Mai 2020
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mai 2020
    Messages : 325
    Points : 436
    Points
    436
    Par défaut
    Bonjour,

    Avez-vous essayer String.format ?

    https://docs.oracle.com/javase/7/doc...er.html#syntax

  3. #3
    Membre régulier Avatar de Zalawy
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2013
    Messages : 137
    Points : 99
    Points
    99
    Par défaut
    Merci de votre réponse gervais.

    J'ai essayé et cela n'a pas donné :

    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
    	private static void afficherunmontant(String valeur, int taille) {
    			if (valeur.length() > taille){
    				valeur = valeur.substring(0, taille);
    				System.out.println(valeur); ////pour visualiser la valeur
    			} else if (valeur.length() < taille) {
    			valeur = valeur.substring(1, taille);
    			 System.out.println(valeur); //pour visualiser la valeur
    			}
    		   StringUtils.righPad(valeur, taille);
    	}
     
    	public static void main(String[] args) {
     
    	String uneValeurNeg = "-00000000021737";
    	String valeur = String.format(uneValeurNeg, "\u0028");
    	 //String valeur = "-00000000021737"
    	 afficherunmontant(valeur, 9);
     
    	}
    Rien n'est affiché. Avez vous des exemples pour String.format?

  4. #4
    Membre averti
    Homme Profil pro
    Architecte technique
    Inscrit en
    Mai 2020
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mai 2020
    Messages : 325
    Points : 436
    Points
    436
    Par défaut
    La méthode String.format prends deux paramètres, le premier étant le format, le second la ou les valeurs à formatter

    La chaine précisant le format suis une syntaxe spécifique pour spécifier quel argument utiliser et comment le formatter: https://docs.oracle.com/javase/7/doc...Formatter.html
    • Nous voulons formatter le premier argument : %1
    • Nous voulons formatter un entier : %1$d
    • Nous voulons l'aligner rajouter des "0" : %1$0d
    • Nous voulons 9 caractères : %1$09d



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
        public static void main(String[] args) {
            verify(format(21737), "000021737");
            verify(format(-21737), "-00021737");
        }
     
        private static String format(int num) {
            return String.format("%1$09d", num);
        }

  5. #5
    Membre régulier Avatar de Zalawy
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2013
    Messages : 137
    Points : 99
    Points
    99
    Par défaut
    Merci gervais de votre retour rapide.
    Ce code ne me convainc pas trop.
    J'explique mon résultat attendu :
    - Si le nombre de caractères d'un chiffre positif d'entrée définit 9 caractères (000000000021737) et la sortie doit s'afficher 000021737 => OK
    - Si le nombre de caractères d'un chiffre négatif d'entrée définit 9 caractères (-00000000021737) et la sortie doit s'afficher -00021737 => C'est le résultat que je souhaite obtenir. J'ai pensé au substring qui enlève 1 zéro pour un chiffre négatif. Est-ce que c'est bien cela? J'espère que mes explications sont bien claires.

    Je préfère de maintenir la partie de code car cela fonctionne bien pour définir un chiffre positif :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    	private static void afficherunmontant(String valeur, int taille) {
    			if (valeur.length() > taille){
    				valeur = valeur.substring(0, taille);
    				System.out.println(valeur); ////pour visualiser la valeur
    			} else if (valeur.length() < taille) {
    			valeur = valeur.substring(1, taille);
    			 System.out.println(valeur); //pour visualiser la valeur
    			}
    		   StringUtils.righPad(valeur, taille);
    	}

  6. #6
    Membre averti
    Homme Profil pro
    Architecte technique
    Inscrit en
    Mai 2020
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mai 2020
    Messages : 325
    Points : 436
    Points
    436
    Par défaut
    Je ne suis pas sur de comprendre votre problème non.

    Si c'est la longueur de la sortie qui vous pose problème, alors vous pouvez modifier le "format" pour obtenir la longueur voulue. Si c'est le type d'entrée (int) qui vous dérange, vous pouvez le remplacer par String et parser cette chaine de caractères avant de la formatter. Le code ci-dessous vous permet de spécifier la longueur attendue et réponds à vos attentes d'entrée sortie (comme je les comprends):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
        public static void main(String[] args) {
            verify(format("000000000021737", 9), "000021737");
            verify(format("-00000000021737", 9), "-00021737");
        }
     
        private static String format(String input, int length) {
            int num = Integer.parseInt(input);
            return String.format("%1$0"+length+"d", num);
        }

  7. #7
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 629
    Points : 10 554
    Points
    10 554
    Par défaut
    Et la concaténation avec + ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public class Main {
         public static void main(String[] args) {
            String number = "00000000021737";
            String negative = "-" + number;
     
            System.out.println("Positive: " + number + ", negative: " + negative);
         }
    }

  8. #8
    Membre régulier Avatar de Zalawy
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2013
    Messages : 137
    Points : 99
    Points
    99
    Par défaut
    Merci de votre réponse foetus.
    Si la variable est déjà définie par un chiffre négatif comme par exemple elle vient de la base de données et je ne peux pas le modifier. Comment sortir le montant négatif?

Discussions similaires

  1. [2.x] Définir une chaine en paramètre global
    Par Mister Nono dans le forum Symfony
    Réponses: 2
    Dernier message: 27/04/2014, 17h28
  2. Définir une chaine (non connue) dans une variable
    Par synx91 dans le forum Langage
    Réponses: 2
    Dernier message: 26/09/2012, 16h00
  3. recherche d'une chaine caractère dans un fichier
    Par maitre.dohko dans le forum VBScript
    Réponses: 6
    Dernier message: 21/04/2010, 12h13
  4. [XL-2007] soustraire une chaine caractères "irréguliers"
    Par evy_c dans le forum Excel
    Réponses: 3
    Dernier message: 22/01/2010, 10h55
  5. Recopier une chaine, caractère par caractère
    Par xenos dans le forum Débuter
    Réponses: 8
    Dernier message: 25/02/2009, 12h38

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