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

Langage Java Discussion :

Ecriture formatée, comment faire?


Sujet :

Langage Java

  1. #1
    Membre confirmé
    Inscrit en
    Mai 2005
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 86
    Par défaut Ecriture formatée, comment faire?
    Bonjour,

    j'ai besoin d'écrire, en sortie, un fichier texte avec une écriture formatée.
    Par exemple, on va dire que chaque ligne de mon fichier texte doit être composé d'un nom et de 3 coordonnées (x,y et z) et que mon nom doit être entré entre la colonne (ou caractere) 1 à 10, la coordonnées x entre la colonne 11 à 15, le y entre 16 à 20 et le z entre 21 à 25. Mais si le nom ne fait que 3 caracteres, que les coordonnées ne sont qu'un chiffre, il faut quand meme qu'ils soient écrit dans l'intervalle que j'ai donné.
    Exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    bille_nb  12.5 13.5 11
    rond      2    2    3
    Et je ne sais pas comment faire pour faire cette écriture formatée en java, pourriez vous me guider svp?

  2. #2
    Membre éprouvé Avatar de BainE
    Inscrit en
    Mai 2004
    Messages
    1 327
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 1 327
    Par défaut
    Salut,

    tu ne sais pas ecrire dans un fichier ?
    tu ne sais pas compter le nombre de caracteres d une string ?
    tu ne sias pas compter jusqu a 10 ?

    Qu est ce qui tu bloque ?

  3. #3
    Membre Expert
    Avatar de Patriarch24
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2003
    Messages
    1 047
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 047
    Par défaut
    Classe MessageFormat. Une petite recherche et c'est gagné.

  4. #4
    Membre confirmé
    Inscrit en
    Mai 2005
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 86
    Par défaut
    Citation Envoyé par BainE
    Salut,

    tu ne sais pas ecrire dans un fichier ?
    tu ne sais pas compter le nombre de caracteres d une string ?
    tu ne sias pas compter jusqu a 10 ?

    Qu est ce qui tu bloque ?
    Si, je sais ecrire dans un fichier et je sais aussi compter jusqu'à 10 (euh...tu me mets le doute... ).
    Ce que je veux faire, c'est que chaque élément (le nom et les coordonnées x,y,z dans mon exemple) soit contenu dans un intervalle de colonnes qui soit toujours les même, meme si le nombre de caractere des éléments est différents. Je veux que quelquesoit le nombre de caractere de mes éléments, je puisse mettre le premier éléments dans le premier intervalle (1 à 10), le x dans le deuxieme intervalle (11 à 15), ainsi de suite.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    je souhaite ça :
     
    bille_nb  12.5 13.5 11
    rond      2    2    3
     
    et je ne veux pas ça :
     
    bille_nb 12.5 13.5 11
    rond 2 2 3

  5. #5
    Membre confirmé
    Inscrit en
    Mai 2005
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 86
    Par défaut
    mais je pense avoir trouvé

  6. #6
    Membre éprouvé Avatar de BainE
    Inscrit en
    Mai 2004
    Messages
    1 327
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 1 327
    Par défaut
    la (une des) solution se trouve au fin fond des cours de C avec les tableau de char et un peu de padding d espace.

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 44

  8. #8
    Membre confirmé
    Inscrit en
    Mai 2005
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 86
    Par défaut
    oui, merci, je pensais aussi faire avec le bon vieu printf

  9. #9
    Membre confirmé
    Inscrit en
    Mai 2005
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 86
    Par défaut
    j'ai juste une derniere question, lorsque je souhaite écrire le mot "ATOM" dans un intervalle de caractere de 1 à 8 (ce qui signifie qui y aura le mot ATOM + 4 espace dans cet intervalle), est il possible de faire un justifié à droite du mot ATOM dans cet intervalle de 8 avec la méthode printf?

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 44
    Par défaut
    Oui.

    Cf le lien que j'ai donné :

    If no flags are given the default formatting is as follows:

    * The output is right-justified within the width

  11. #11
    Membre confirmé
    Inscrit en
    Mai 2005
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 86
    Par défaut
    j'ai pas tout lu
    j'vais m'y plonger, merci

  12. #12
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,



    Tu peux utiliser la même syntaxe que le printf() du C pour aligner les chaines de caractères :


    % - xx . yy s

    Avec :
    • - qui permet de spécifier un alignement à gauche (droite sinon).
    • xx, un nombre qui permet de spécifier la taille minimum de la chaine (comblé par des espaces). Mais si la chaine est plus grande elle prendra la place qu'il lui faut.
    • yy, un nombre qui permet de spécifier la taille maximum de la chaine. La chaine sera tronqué si elle est plus grande.


    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    	String a = "ATOM";
    	System.out.printf("[%s]%n", a);		// Affichage normal
    	System.out.printf("[%8s]%n", a);	// sur 8 chars min aligné à droite
    	System.out.printf("[%-8s]%n", a);	// sur 8 chars min aligné à gauche
    	System.out.printf("[%8.8s]%n", a);	// sur 8 chars aligné à droite
    	System.out.printf("[%-8.8s]%n", a);	// sur 8 chars aligné à gauche
    donnera :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    [ATOM]
    [    ATOM]
    [ATOM    ]
    [    ATOM]
    [ATOM    ]
    et le même code avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String a = "ATOM_1234567890AZERTYUIOP";
    donnera
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    [ATOM_1234567890AZERTYUIOP]
    [ATOM_1234567890AZERTYUIOP]
    [ATOM_1234567890AZERTYUIOP]
    [ATOM_123]
    [ATOM_123]

    Tu as des règles proches pour différents types de données, pour plus de détail voir l'API de la classe Formatter...

    a++

  13. #13
    Membre Expert Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Par défaut
    Juste pour info toi qui à l'air de mieux connaitre que moi. Quel est la difference entre System.out.format et System.out.printf ??

    Merci

  14. #14
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par maxf1
    Juste pour info toi qui à l'air de mieux connaitre que moi. Quel est la difference entre System.out.format et System.out.printf ??
    Strictement aucune !

    C'est d'ailleurs indiqué dans la doc de printf() :
    An invocation of this method of the form out.printf(format, args) behaves in exactly the same way as the invocation
    out.format(format, args)
    Et son code se contente d'appeler format() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        public PrintStream printf(String format, Object ... args) {
    	return format(format, args);
        }
    En fait le "nom Java" est plutôt format() puisque l'action consiste à formater un texte. D'ailleurs c'est seulement ce nom que l'on retrouve dans la classe Formatter ou dans la classe String...

    printf() a du être rajouté dans PrintStream car ce terme est très connu et correspond exactement à ce que fait PrintStream.format()...

    a++

  15. #15
    Membre Expert Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Par défaut
    Ok merci pour l'info. Donc un peu normal que je ne voyais pas de différence, . Fallait aller voir le code d'un peu plus près

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 24/09/2008, 13h54
  2. Réponses: 4
    Dernier message: 03/07/2008, 12h08
  3. comment faire un format smalldatetime
    Par hebus73 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 25/01/2008, 18h04
  4. Réponses: 4
    Dernier message: 26/10/2007, 12h52
  5. Comment faire une video au format avi ?
    Par fab.faust dans le forum MATLAB
    Réponses: 1
    Dernier message: 27/03/2007, 02h41

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