2012-12-09 14 views
5

Sto lavorando a un progetto in cui è necessario visualizzare alberi testuali. Sto tentando di utilizzare il metodo String.format di Java per semplificare il processo di formattazione, ma ho riscontrato problemi durante il tentativo di applicare larghezze variabili.Larghezze variabili nel metodo String.format di Java

Corrente Ho una variabile (un int) che si chiama profondità.

cerco di fare quanto segue:

String.format("%"+depth+"s"," ") + getOriginalText() + "\n"; 

Tuttavia ottengo il seguente errore.

java.util.FormatFlagsConversionMismatchException: Conversion = s, Flags = 0 

Qualche suggerimento su come farlo, o dovrei accontentarmi di cicli?

Grazie per l'aiuto!

+0

Stai chiedendo questo? http://stackoverflow.com/questions/388461/how-can-i-pad-a-string-in-java – billjamesdev

+0

Puoi pubblicare il codice completo, sto cercando di capire cosa stai facendo. – ElderMael

+0

Mi chiedevo anche perché sapevo che C/C++ aveva un modificatore '*': 'La larghezza non è specificata nella stringa di formato, ma come argomento addizionale di valore intero che precede l'argomento che deve essere formattato., Cioè I stava cercando qualcosa come 'String.format ("% * i ", pad_width, numero)'. Ma anche la risposta data ha un senso. – mxmlnkn

risposta

4

Questo funziona:

int depth = 5; 
String str= "Hello"+ String.format("%"+depth+"s"," ") + "world" + "\n"; 
System.out.println(str); 

Esso stampa 5, mentre gli spazi in mezzo.

Ciao           mondo.

, controllare che il codice e fare in modo che depth viene assegnato con un valore valido int. Molto probabilmente questo (valore non valido in depth) è il problema.

+0

Questo ha senso. Ho avuto un enorme errore nei miei pensieri, credo. Ho dimenticato di passare zero per profondità per la prima chiamata e "% 0s" è un errore. –

+0

@PhillipHuff: Buono a sapersi. Se ti senti, questo è utile quindi non dimenticare di accettare la risposta. –

Problemi correlati