Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    2

    Formattazione testo output su file

    Ciao a tutti..
    Dopo varie ricerche tra i vari siti e la documentazione di Java ho deciso di chiedere aiuto a voi..
    Io ho il problema di scrivere un file in java con una determinata "formattazione" o meglio nel mio file dovrò avere i dati estratti dal database incolonnati.
    Ora mi spiego meglio con un esempio...

    Nel file avrò:

    colonna_1 colonna_2 colonna_3 ................. colonna_n
    +---------+-----------+-----------+.................+----------+
    dato_1 dato_2 dato_3 dato_n
    dato_.. dato_.. dato_.. dato_..



    dove "dato_ " e' un numero double di cui non so il numero di decimali ed interi di cui e' formato;
    dove +-------+ e' la larghezze della colonna in cui il dato dovrà essere contenuto.

    innanzitutto vi dico che ho visto la classe java Formatter ke mi permette di allineare il testo a sinistra e mi permette di stabilire il numero di cifre significative interi e decimali.

    Io conosco inoltre la larghezza della colonna.

    Ora il problema e' stabilire la lunghezza del dato in base alla sua composizione. Quindi mi servirebbe conoscere il numero di cifre (interi+decimali) presenti così che possa tramite il metodo format (della classe Formatter) indicare la dimensione da occupare per poter incolonnare tutti i dati.

    (per chi non lo sapesse, format funziona così

    int n = 2;
    System.out.format("| %3d |", n);

    Risultato:
    |***2*| (qui nel post non mi tiene la formattazione per cui inseriro gli * al posto degli spazi)

    Io non l'ho ancora testato nel mio programmino ma dovrebbe funzionare...

    Sapete altre strade per fare quello che voglio fare?
    O sapete come controllare il numero di cifre in un numero di tipo double senza "trasformarlo" in stringa per poi riportarlo a double?

    Grazie a chiunque mi dia una risposta.
    Spero di esser stato abbastanza chiaro.. in caso contrario chiedetemi pure..


    Giacomo

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Formattazione testo output su file

    Originariamente inviato da James83
    Ora il problema e' stabilire la lunghezza del dato in base alla sua composizione. Quindi mi servirebbe conoscere il numero di cifre (interi+decimali) presenti così che possa tramite il metodo format (della classe Formatter) indicare la dimensione da occupare per poter incolonnare tutti i dati.
    Sinceramente non mi è molto chiaro quale è il tuo problema o dubbio. Quando si usa la nuova funzionalità di formattazione delle stringhe di Java 5, in genere si mette uno specificatore di formato con un width e/o precision ben specifici per indicare quanti caratteri usare.

    Esempio: voglio occupare sempre come minimo 9 caratteri in totale, di cui 2 dedicati ai decimali:

    System.out.format ("|%9.2f|%n", 1234.5678);
    System.out.format ("|%9.2f|%n", 34.5678);

    codice:
    |  1234,57|
    |    34,57|
    
     ^       ^
     123456789
    Questo ovviamente se sai già a priori che devi occupare 9 caratteri. Se invece non puoi mettere esplicitamente nella stringa di formato %9.2 perché magari la larghezza della colonna la determini dinamicamente o in altro modo, allora basta solo creare opportunamente a runtime la stringa di formato.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    2
    Il mio problema e' che potrei avere tutte cifre decimali come nessuna...

    QUindi se volessi semplicemente dire di occupare 9 spazi (senza specificare il numero di decimali)?

    Funziona anche con la classe FileWriter?

    Grazie e scusami se sono domande banali..

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da James83
    Il mio problema e' che potrei avere tutte cifre decimali come nessuna...
    Sì ma la questione è che in genere a uno non interessa tanto sapere se il numero ha 0, 1, 2 ecc.. decimali ma specificare quanti ne vuole visualizzare!

    Originariamente inviato da James83
    QUindi se volessi semplicemente dire di occupare 9 spazi (senza specificare il numero di decimali)?
    Se non specifichi il 'precision', ecco cosa ottieni:

    System.out.format ("|%9f|%n", 1234.5678);
    System.out.format ("|%9f|%n", 34.56);
    System.out.format ("|%9f|%n", 34.0);

    codice:
    |1234,567800|
    |34,560000|
    |34,000000|
    Se non viene specificato il 'precision', per default è 6. E nota che il 'width' è il numero minimo di caratteri. Quindi vedi bene che andrebbe oltre i 9 caratteri con il primo numero.

    Originariamente inviato da James83
    Funziona anche con la classe FileWriter?
    FileWriter non ha alcuna funzionalità di formattazione. FileWriter "sa" solo di dover scrivere uno o più caratteri e basta.

    PrintStream/PrintWriter hanno il format(). Tecnicamente un FileWriter si potrebbe anche "wrapparlo" in un PrintWriter.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.