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 :

(Récursivité) Une virgule tous les 3 chiffres


Sujet :

avec Java

  1. #1
    Futur Membre du Club
    Inscrit en
    Mai 2008
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 11
    Points : 5
    Points
    5
    Par défaut (Récursivité) Une virgule tous les 3 chiffres
    Bonjour à tous!

    J'ai un petit bout de code qui me permet d'afficher des nombres avec une virgule tous les 3 chiffres.
    1233498 devient 1,233,498
    1234 devient 1,234
    1376320 devient 1,376,320
    etc...


    Mais je voudrais "transformer" cette méthode en méthode récursive. Pouvez-vous m'aider ? Je ne vois vraiment pas par où commencer.

    Voici le code initial :

    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
    20
    21
    22
    23
    24
    import java.util.*;
     
    class test {
     
    	public static StringBuffer placeCommas(int arg_num) {
     
    		StringBuffer str = new StringBuffer(String.valueOf(arg_num));
     
     
    		for (int i=str.length()-3; i>0; i-=3) {
    			str = str.insert(i,',');
    		}
     
    		return str;
     
    	}
     
    	public static void main(String args[]) {
    		System.out.println( placeCommas(123) );
    		System.out.println( placeCommas(123456) );
    		System.out.println( placeCommas(123456789) );
    		System.out.println( placeCommas(12345) );
    	}
    }
    Merci de m'avoir lu

  2. #2
    in
    in est déconnecté
    Membre expérimenté Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Points : 1 718
    Points
    1 718
    Par défaut
    Bonjour,

    c'est pour un exercice que tu fais ça ou c'est vraiment pour formater un affichage de nombre ?

    Si tu es dans le deuxième cas, je te conseille d'aller voir un peu DecimalFormat ... pas besoin d'aller s'embeter à réécrire des choses comme ça ...

    De plus tu as une belle entrée dans la FAQ :
    Comment convertir un nombre en chaîne formatée ?

    sinon pour la récursivité, même si je ne vois pas trop l'intérêt, je pense que ta méthode récursive devrait se contenter de placer une virgule trois caractères avant la première virgule trouvée ... D'ailleurs elle prendrait dans ce cas un String en argument.

  3. #3
    Futur Membre du Club
    Inscrit en
    Mai 2008
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Oui moi je ne vois pas l'interêt non plus, mais c'est un exercice... à rendre

    Bref, je ne vois pas du tout comment faire et la méthode prend un int en entrée... donc pas possible de mettre un string (c'est imposé pour l'exercice)

  4. #4
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public static StringBuffer virgule( int i )
    {
    	StringBuffer buffer = new StringBuffer();
    	if( i < 1000 ) { return buffer.append( i ); }
    	else
    	{
    		buffer.append( virgule( i / 1000 ) );
    		buffer.append( ',' );
    		return buffer.append( i % 1000 );
    	}
    }
    Je te laisse adapter la méthode pour gérer les entiers négatifs.

  5. #5
    Futur Membre du Club
    Inscrit en
    Mai 2008
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Merci pour le code! C'est exactement ce qu'il me fallait! Encore merci

Discussions similaires

  1. Débutant-Vider une table tous les ans
    Par Michel Hubert dans le forum Sécurité
    Réponses: 13
    Dernier message: 29/08/2006, 00h21
  2. [Débutant]Comment exécuter une fonction tous les jours
    Par pseudomh dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 21/06/2006, 16h10
  3. [VB.NET][2.0]retirer en une fois tous les objets d'un panel
    Par Golzinne dans le forum Windows Forms
    Réponses: 5
    Dernier message: 14/03/2006, 15h06
  4. Réponses: 4
    Dernier message: 08/11/2005, 17h13
  5. [Swing] Mettre une police à tous les composants
    Par MrEddy dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 02/05/2004, 15h21

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